basicForm.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<!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=utf-8">
<title>Insert title here</title>
</head>
<body>
<center><h3>기본정보 폼</h3></center><hr>
<form action="appendform.jsp" method ="post">
<!-- submit를 누르면 action에 해당하는 value로 이동 method는 post -->
이름 : <input type="text" id="userid" name="userid"><br>
이메일 : <input type="text" id="email" name="email"><br>
이메일 : <input type="submit" value="다음"><br>
</form>
</body>
</html>
appendform.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<!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=utf-8">
<title>추가정보 입력 폼</title>
</head>
<body>
<%
// aplication 내장 객체 : javax.servlet.ServletContext 타입
RequestDispatcher rd = application.getRequestDispatcher("/resultInfo.jsp");
request.setAttribute("address", "서울시 강남구");
request.setAttribute("phone", "010-9999-1111");
rd.forward(request,response);
%>
<!-- send의 경우
response.sendRedirect("http://www.naver.com");
//response.sendRedirect("./resultInfo.jsp?address=seuol&phone=010-9999-1111");
//response.sendRedirect("./resultInfo.jsp");
// response.sendRedirect("http://localhost:8000/web3/resultInfo.jsp")
// 절대주소나 경로주소로 나타낼 수 있다.
// naver 주소로 지정할경우 해당 send의 정의를 알 수 있다.
-->
</body>
</html>
resultInfo.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<!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=utf-8">
<title>개인정보 입력 확인</title>
</head>
<body>
<%
out.println("userid : "+request.getParameter("userid"));
out.println("email : "+request.getParameter("email"));
out.println("address : "+request.getAttribute("address"));
out.println("phone : "+request.getAttribute("phone"));
%>
결과를 보면 basicform에서 저장된 파라미터는 result에서 처리되어 appendform에서 출력된다.
언어가 깨질경우 appendform에서 request.setCharacterEncoding("utf-8"); 을 추가한다.
<요청 전달 정리>
1. RequestDispatcher 방식
: 동일한 웹서버내에 웹 컨텍스트내의 jsp나 servlet으로 요청을 전달할 수 있다.
(다른 웹서버 혹은 다른 웹 컨텍스트로 요청 전달 불가하다)
정보 공유기능(요청을 전달할 때 다른 추가적인 정보를 전달할 수 있다.
url과 실제 응답 content의 page와 다르다.
2. send
: 동일한 웹서버, 다른 웹서버로 요청을 전달 가능하다.
요청은 항상 get 방식으로 전달된다.
동일한 웹서버의 jsp나 servlet으로 전달된 경우 전달된 페이지에서 request, response 객체가 새로 생성된다.
이는 정보 공유가 불가능하다.
최종 응답 페이지는 경로가 url로 표시된다.
send 일 때.