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 은 객체만 넘겨주고 데이터를 넘겨줄수 없음