forward와 response의 차이를 이해하기 위한 예제이다.
forward는 페이지 제어권을 넘겨주기 때문에 내용을 end.jsp 까지 보낼 수 있으며,
내용에 수정,추가 가능하다는 것을 알 수 있다.
시작페이지 코드 ( 내용을 입력할 jsp )
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>시작페이지</title>
</head>
<body>
<!-- 시작페이지에서는 form태그로 요청을 보낼 준비를함 -->
<form action="forward.jsp" method="post">
forward 액션: <input type="text" name="uname">
<input type="submit" value="전송!">
</form>
<hr>
<form action="response.jsp" method="post">
response.sendRedirect(): <input type="text" name="uname">
<input type="submit" value="전송!">
</form>
</body>
</html>
내용이 출력될 화면의 jsp 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>종료 페이지</title>
</head>
<body>
<h1>종료 페이지</h1>
<hr>
이름: <%= request.getParameter("uname") %> <br>
메세지: <%= request.getParameter("msg") %>
</body>
</html>
foward.jsp ( foward 방식으로 전달을 위한 코드 )
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:forward page="end.jsp">
<jsp:param value="apple" name="msg"/>
</jsp:forward>
response.jsp ( response 방식으로 전달을 위한 코드)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% response.sendRedirect("end.jsp"); %>
수행결과
1)
forward 액션 : 에 hello 라는 내용을 입력하고 전송을 보낸 뒤 수행결과
나는 분명 hello 라는 것 밖에 전달하지 않았지만,
결과창에선 forward.jsp에 추가로 설정해논 msg 값까지 추가되어 전달이 된 것을 볼 수 있다. ( 제어권을 넘겨 받았기 때문)
2)
response.sendRedirect() 에 hello 라는 내용을 입력하고 전송을 보낸 뒤 수행결과
똑같은 hello를 보냈는데 null이 도착한 것을 볼 수 있음,
이것은 제어권을 받지 못하고 다시 제어권을 돌려주어서 response.jsp 에는 내가 입력한 hello가 있지만,
그 후에 end.jsp 까지는 전달하지 못한 것을 볼 수 있음.