서블릿 forward와 include의 비교

forward와 include 모두 서블릿에서 흐름을 제어할때 쓰이는 메소드 입니다.
forward는 A에서 forward(B)를 한다면 forward를 호출하기전까지 전부 해석하다가
호출하는 시점에 B로 흐름이 넘어갑니다.
즉 아직까지 request는 한번 입니다
include는 A에서 include(B)를 한다면 A에서 include 호출하기전까지 모두 해석
-> B로 흐름 넘어가서 B 전부 해석하고 끝나면 -> 다시 A의 호출문장으로 넘어옵니다.
여기서도 request는 한번입니다.
근데 sendRedirect 라는 놈이 있는데요 이놈은 request가 두번이 일어납니다.
왜냐면 sendRedirect는 특정주소를 호출할 것을 요청하는 응답신호를 브라우저에게 보내기 때문입니다.
즉 A에서 sendeRedirect(B)를 한다면 A -> B -> A -> B
그래서 request 가 두번 발생하는것입니다.
감이 잘 안오시죠? 하하.. 저두 그렇답니다 -_-;;
그래서 소스를 준비했답니다 -_-v
Strat.html
<html>
<head>
<title> forward 및 include , sendRedirect 때려잡기! </title>
</head>
<body>
<form action="Check.jsp" method="post">
당신의 나이는?
<input type="text" name="test"><br><br>
<input type="radio" name="check" value="forward"> forward 방식
<input type="radio" name="check" value="include"> include 방식
<input type="submit" value="Confirm">
</form>
</body>
</html>
간단히 forward와 include중 어느 형식으로 보낼것인치 체크하고 나이를 넣게 했습니다.
Check.jsp
<%
String check = request.getParameter("check");
java.util.Date today = java.util.Calendar.getInstance().getTime();
%>
이건 include 할때만 보여요~ ^^
<hr>
<% if (check.equals("forward"))
{%>
<jsp:forward page="./Result.jsp" >
<jsp:param name="check" value="<%=check%>"/>
<jsp:param name="today" value="<%=today%>"/>
</jsp:forward>
<hr>
<% } else if (check.equals("include")) { %>
<jsp:include page="./Result.jsp">
<jsp:param name="check" value="<%=check%>"/>
<jsp:param name="today" value="<%=today%>"/>
</jsp:include>
<% } %>
이것은 결과 페이지(result.jsp)에 가기전에 forward와 include의 차이점을 보여주는 페이지
일단 포워드는 호출하면 그 위까지만 해석하고 바로 흐름이 바뀌기 때문에 " 이건 include 할때만 보여요~ ^^"라는 문장은 해석은 하지만 뿌리지는 못합니다.
그래서 그럼 이넘이 과연 해석은 정말 하고 가는가 의문이 들어서 시간을 넘는 today를 만들어서 넘겼습니다.
Result.jsp
<br>
이것은 <%= request.getParameter("check") %> 방식입니다.
<hr>
나이 : <%=request.getParameter("test")%>
<hr>
현재 시간 : <%= request.getParameter("today")%>
이건 결과 페이지입니다.
forward의 실행화면




'My work space > JSP/Servlet' 카테고리의 다른 글
게시판 만들기 - 수정, 삭제하기(펌) (0) | 2008.09.08 |
---|---|
Database Connection Pool (DBCP)의 사용 (0) | 2008.09.08 |
쿠키 관련 (0) | 2008.09.08 |
HttpSessionBindingListener로 구현한 중복로그인체크(3) (0) | 2008.09.08 |
HttpSessionBindingListener로 구현한 중복로그인체크(2) (0) | 2008.09.08 |