카테고리 없음

<Servlet>Servlet forward

연찌현찌 2018. 8. 20. 11:53

setAttribute 를 통해 데이터를 넘겨줄수있음
객체 자체를 넘겨줌

input으로 받은 이름과 번호 
멤버 dto 에 저장후 데이터 넘기기

// html

 <form action="hello" method="get"> 
  이름: <input type="text" name="name"><br> 
  번호: <input type="text" name="num"><br> 
  <input type="submit" value="전송"> 
 </form> 

// servlet.java

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

resp.setContentType("text/html; charset=utf-8"); 


String num = req.getParameter("num"); 
String name = req.getParameter("name"); 

MemDto mem = new MemDto(Integer.parseInt(num.trim()), name); 


PrintWriter out = resp.getWriter();  


out.println("<html>");  

out.println("<head>");  
out.println("<title>Hello</title>");  
out.println("</head>");  

out.println("<body>");  

out.println("<p>helloserclet start</p>");  
out.println("<p>"+ num + ":" + name +"</p>");  


// 멤버 연결 
req.setAttribute("member", mem); 

// forword 
String disp = "forWardTest"; 
RequestDispatcher dispatch = req.getRequestDispatcher(disp); 
dispatch.forward(req, resp); 


out.println("<p>helloserclet end</p>");  

out.println("</body>");  

out.println("</html>");  

out.close();  
}

// forward.java

public class forWardTest extends HttpServlet { 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 


resp.setContentType("text/html; charset=utf-8"); 

MemDto dto = (MemDto)req.getAttribute("member"); 

PrintWriter out = resp.getWriter();  

out.println("<div style='border:1px solid blue; color:blue;font-size:22px;padding:20px'>forWardTest forWardTest</div>");  

out.println("<p>" + dto.toString() + "</p>"); 

}


// web.xml

포워드 추가
    <servlet> 
   <servlet-name>forWardTest</servlet-name> 
   <servlet-class>sample08.forWardTest</servlet-class> 
  </servlet> 
   
  <servlet-mapping> 
   <servlet-name>forWardTest</servlet-name> 
   <url-pattern>/forWardTest</url-pattern> 
  </servlet-mapping>

// MemberDto

public class MemDto { 

private int num; 
private String name; 

public MemDto() { 



public MemDto(int num, String name) { 
super(); 
this.num = num; 
this.name = name; 


@Override 
public String toString() { 
return "MemDto [num=" + num + ", name=" + name + "]"; 





////////////  sendRedirect 와의 차이점
sendRedirect 은 객체만 넘겨주고 데이터를 넘겨줄수 없음