웹 프로그래밍 22(JSP,servlet)-포워딩(Forwarding)과 리다이렉트(redirect)
*포워딩(Forwarding)
포워딩은 말 그대로 건내주기라는 뜻이다.
request와 response 객체를 담아 호출한 페이지에 전송해준다.
호출한 페이지는 담아온 request와 response의 값들을 확인할 수 있다.
포워딩을 사용하기 위한 내장객체는
RequestDispacher 클래스를 사용한다.
*리다이렉트(Redirect)
웹 컨테이너(Web Container)는 sendRedirect() 메서드가 호출되어 리다이렉트(Redirect) 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령한다. 이 명령에는 브라우저가 웹 컨테이너의 응답을 받은 후 다시 요청을 보낼 새로운 URL을 포함한다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다. 다른 웹 컨테이너에 있는 주소로 이동이 가능하며 새로운 페이지에서는 Request와 Response 객체가 새롭게 생성된다.
출저 : https://sdevstudy.tistory.com/26
리다이렉트를 사용하기 위한 내장객체는
HttpServletResponse 클래스를 사용한다.
※웹 컨테이너 : 컨테이너는 서블릿의 생명 주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행하는 프로그램이다
=================================소스=================================
-포워딩 예제
-dispacherjsp.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body>
Dispacherjsp.jsp <hr />
id : <%= request.getAttribute("id") %> pw : <%= request.getAttribute("pw") %>
</body> </html> |
-requestObj.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
package com.java.dispacher;
import java.io.IOException;
import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
/** * Servlet implementation class requestObj */ @WebServlet("/requestObj") public class requestObj extends HttpServlet { private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */ public requestObj() { super(); // TODO Auto-generated constructor stub }
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub action(request,response); }
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub action(request, response); }
void action(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException { String id = "abcd"; String pw = "1234";
request.setAttribute("id",id); request.setAttribute("pw",pw);
RequestDispatcher dispatcher = request.getRequestDispatcher("/dispacherjsp.jsp"); dispatcher.forward(request, response);
} }
|
-출력화면
값이 출력되었다.
-리다이렉트 예제
-redirectjsp.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title> </head> <body>
<% request.setAttribute("id","abcd"); request.setAttribute("pw","1234");
response.sendRedirect("requestObj"); %> </body> </html> |
-requestObj.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
package com.java.redirect;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
/** * Servlet implementation class requestObj */ @WebServlet("/requestObj") public class requestObj extends HttpServlet { private static final long serialVersionUID = 1L;
/** * @see HttpServlet#HttpServlet() */ public requestObj() { super(); // TODO Auto-generated constructor stub }
/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub action(request,response); }
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub action(request,response); }
void action(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String id = (String)request.getAttribute("id"); String pw = (String)request.getAttribute("pw");
response.setContentType("text/jhtml; charset=EUC-KR"); PrintWriter writer = response.getWriter(); writer.print("<html><head></head><body>"); writer.print("RequestObj" + "<hr />"); writer.print("id : " + id + "<br />"); writer.print("pw : " + pw); writer.print("</body></html>"); }
}
|
-출력 화면
값이 출력 되지않았다.
'프로그래밍 정리 > JSP, Servlet, DB(oracle)' 카테고리의 다른 글
웹 프로그래밍 23-2(게시판 만들기)-전체적 설계 (0) | 2020.01.06 |
---|---|
웹 프로그래밍 23-1(게시판 만들기)-MVC패턴 (0) | 2020.01.06 |
웹 프로그래밍 21(JSP,servlet)-FrontController패턴 (0) | 2020.01.06 |
웹 프로그래밍 20-2(JSP)-JSTL 기초, Core를 사용해보자 (0) | 2020.01.06 |
웹 프로그래밍 20-1(JSP)-JSTL 시작 (0) | 2020.01.06 |