하나의 서블릿에서 다른 서블릿이나 JSP와 연동하는 방법
요청을 전달하는 것
요청 추가 작업 분배
요청 정보 공유
추가 데이터 전달 가능
ex) 서블릿: 상품관리 + JSP: 조회된 상품 표시
HttpServletResponse sendRedirect("서블릿 || JSP")
웹 브라우저에 재요청
최종적으로 웹 브라우저에는 두번째 서블릿 매핑 이름이 표시됨
pro08/src/sec01/ex01/FirstServlet.java
package sec01.ex01;
...
@WebServlet("/first")
public class FirstServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
response.sendRedirect("second"); //재요청
}
}
pro08/src/sec01/ex01/SecondServlet.java
package sec01.ex01;
...
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("sendRedirect를 이용한 redirect 실습");
out.println("</body></html>");
}
}
pro08/src/sec02/ex01/FirstServlet.java
package sec02.ex01;
...
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
response.sendRedirect("second?name=lee"); // 재요청 & GET 방식으로 데이터 전달
}
}
pro08/src/sec02/ex01/SecondServlet.java
package sec02.ex01;
...
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
String name = request.getParameter("name"); //전달된 데이터 수령
out.println("<html><body>");
out.println("이름:"+name);
out.println("</body></html>");
}
}
HttpServletResponse response.addHeader("refresh", 경과시간(s); url = (서블릿 || JSP))
웹 브라우저에 재요청
pro08/src/sec01/ex02/FirstServlet.java
package sec01.ex02;
...
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
response.addHeader("Refresh", "1; url=second"); // 1초 후 재요청
}
}
pro08/src/sec01/ex02/SecondServlet.java
package sec01.ex02;
....
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("refresh를 이용한 redirect 실습");
out.println("</body></html>");
}
}
location.href = '서블릿 || JSP';
자바스크립트에서 재요청
pro08/src/sec01/ex03/FirstServlet.java
package sec01.ex03;
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
/* 자바스크립트에 설정하여 재요청 */
out.print("<script type='text/javascript'>");
out.print("location.href='second';");
out.print("</script>");
}
}
pro08/src/sec01/ex03/SecondServlet.java
package sec01.ex03;
....
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("location을 이용한 redirect 실습");
out.println("</body></html>");
}
}
RequestDispatcher dis = request.getRequestDispatcher("서블릿 || JSP"); dis.forward(request, response);
일반적인 포워딩 기능
서블릿이 직접 요청
pro08/src/sec03/ex01/FirstServlet.java
package sec03.ex01;
...
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
/* 포워딩 */
RequestDispatcher dispatch = request.getRequestDispatcher("second");
dispatch.forward(request, response);
}
}
pro08/src/sec03/ex01/SecondServlet.java
package sec03.ex01;
...
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("dispatch를 이용한 forward 실습");
out.println("</body></html>");
}
}
pro08/src/sec03/ex01/FirstServlet.java
package sec03.ex01;
...
@WebServlet("/first")
public class FirstServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
/* 포워딩 & GET 방식으로 데이터 전달 */
RequestDispatcher dispatch = request.getRequestDispatcher("second?name=lee");
dispatch.forward(request, response);
}
}
pro08/src/sec03/ex01/SecondServlet.java
package sex03.ex01;
...
@WebServlet("/second")
public class SecondServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/* 브라우저로 출력 */
PrintWriter out = response.getWriter();
String name = request.getParameter("name"); //전달된 데이터 수령
out.println("<html><body>");
out.println("이름:"+name);
out.println("<br>");
out.println("dispatch를 이용한 forward 실습");
out.println("</body></html>");
}
}
*자바 웹을 다루는 기술