WebApp forward & sendRedirect

황제낙엽 2004.03.09 10:03 조회 수 : 545 추천:162

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
1. Forward와 Redirect의 차이
JSP/Servlet에는 현재 작업중인 페이지에서 다른 페이지로 이동하는 두 가지 방식의 페이지 전환 기능이 있다.
하나는 Forward이고 하나는 Redirect이다.
둘 다 다른 웹페이지로 이동하지만 행동 양태가 다르다.

- Forward : Web Container 차원에서 페이지 이동만 있다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다.
그렇기 때문에, 웹 브라우저에는 최초에 호출한 URL이 표시되고 이동한 페이지의 URL정보는 볼 수 없다.
동일한 웹 컨테이너에 있는 페이지로만 이동할 수 있다.
현재 실행중인 페이지와 Forward에 의해 호출될 페이지는 request와 response객체를 공유한다.

- Redirect : Web Container는 Redirect명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다.
그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다.
다른 웹 컨테이너에 있는 주소로 이동이 가능하다.
새로운 페이지에서는 request와 response객체가 새롭게 생성된다.
하지만 세션은 유지하기 때문에 세션에 파라미터를 저장하여 다음 페이지에서 꺼낼 수 있다. (클라이언트가 동일한 세션 ID를 사용하여 요청을 보내기 때문).

 


2. sendRedirect()의 사용예제
// servlet code
String serverName = request.getServerName();
int serverPort  = request.getServerPort();
String contextPath = request.getContextPath();
String requestUrl = request.getRequestURL().toString();
String requestProtocol = requestUrl.substring(0,requestUrl.indexOf("://")+3);
String location = requestProtocol +serverName+":"+serverPort+contextPath+"/Servlet/sso.UserSignOnServ";
response.sendRedirect(location);
 
// jsp code
<% 
    // 세션에 데이터 저장
    session.setAttribute("username", "JohnDoe");
    String destination = "destination.jsp";
    response.sendRedirect(destination);
 
    //destination page 에서는 다음과 같이 세션에 저장한 값을 취할 수 있다.
    // 세션에서 데이터 가져오기
    //String username = (String) session.getAttribute("username");
%>

 


3. forward()의 사용예제
// servlet code
String jspfile = "/test/employee_list.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(jspfile);
dispatcher.forward(req, res);
 
// jsp code
<%
    // 파라미터 설정
    request.setAttribute("username", "JohnDoe");
    String destination = "jb_main_box.jsp";
    RequestDispatcher dispatcher = request.getRequestDispatcher(destination);
    dispatcher.forward(request, response);
 
    //destination page 에서는 다음과 같이 세션에 저장한 값을 취할 수 있다.
    // 파라미터 읽기
    //String username = (String) request.getAttribute("username");
%>

 

번호 제목 글쓴이 날짜 조회 수
63 J2SE 5.0 Tiger 에 관해서 황제낙엽 2006.02.16 375
62 Building an eBay Rich Client using the XUI Framework 황제낙엽 2006.01.13 369
61 Vector 와 ArrayList의 차이 황제낙엽 2006.02.15 479
60 Using RSS in JSP pages (Informa Project) 황제낙엽 2006.01.10 40801
59 달력만들기 황제낙엽 2005.12.22 635
58 Velocity의 GenericTools 에 있는 DateTool 황제낙엽 2005.12.21 452
57 StringTokenizer 예제소스 황제낙엽 2005.12.21 613
56 유니코드로 된 파일 이름을 인터넷 익스플로러에서 저장하는 방법 황제낙엽 2005.12.01 543
55 Date 클래스와 Calendar 클래스 사이에... 황제낙엽 2005.12.14 337
54 한글처리2 황제낙엽 2005.12.01 424
53 한글처리1 황제낙엽 2005.10.20 533
52 유니코드 관련 유틸 클래스 황제낙엽 2005.07.16 633
51 음력 계산 로직 황제낙엽 2005.07.16 447
50 서블릿 내장 객체 (Implicit Object) 황제낙엽 2004.11.12 473
49 java.text.SimpleDateFormat 클래스를 이용하여 java.util.Date 의 객체 생성시 초기화하기 황제낙엽 2004.10.03 538
48 서블릿에서 페이지출력 황제낙엽 2004.09.30 377
47 Web Server Page작성시 한글처리를 위한 참고사항 (자바서비스넷 링크문서) 황제낙엽 2004.05.27 558
46 서버페이지의 처리시 charset 설정 황제낙엽 2004.05.27 564
45 서버페이지 호출시 파라미터의 한글처리 황제낙엽 2004.05.27 361
» forward & sendRedirect 황제낙엽 2004.03.09 545