requestDispatcher
request.getRequestDispatcher("ex5_B.jsp").forward(request, response);
내장객체 request에 속성인 requestDispatcher()는 포워드(forward)와 맞찬가지로
현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request, response 객체를 공유한다.
예제1) forward 사용해보기 : 범위(Scope)별 변수&데이터 지정해주어 forward가 어떻게 사용되는지 이해해보기
(ex5_A)
<title>ex5_A</title>
</head>
<body>
<%
// 범위별 변수명, 변수데이터 지정해주기
// setAttribute("속성이름", "속성데이터");
pageContext.setAttribute("id", "pageId");
request.setAttribute("id", "requestId");
session.setAttribute("id", "sessionId");
application.setAttribute("id", "applicationId");
// B페이지에 request와 respose를 가져와 사용가능
request.getRequestDispatcher("ex5_B.jsp").forward(request, response);
%>
</body>
(ex5_B)
<title>ex5_B</title>
</head>
<body>
<h2> B 페이지 </h2>
페이지 : <%=pageContext.getAttribute("id") %> <br>
요청 : <%=request.getAttribute("id")%><br>
세션 : <%=session.getAttribute("id") %><br>
애플리케이션 : <%=application.getAttribute("id") %><br>
<a href="ex5_C.jsp">C 페이지로 이동</a>
</body>
(ex5_c)
<title>ex5_C</title>
</head>
<body>
<h2> C 페이지 </h2>
페이지 : <%=pageContext.getAttribute("id") %> <br>
요청 : <%=request.getAttribute("id")%><br>
세션 : <%=session.getAttribute("id") %><br>
애플리케이션 : <%=application.getAttribute("id") %><br>
</body>
예시에서 브라우저가 url로 'ex5_A.jsp'를 서버에 요청하고 있다.
'ex5_A.'파일에서는 request.getRequestDispatcher("ex5_B.jsp").forward(request, response); 코드에 따라
웹 브라우저에 'ex5_B'페이지로 이동할 것을 요청하며 요청객체를 재사용 및 응답 객체를 생성 하고 있다.
예제2) forward 방식 2가지로 파라미터 넘기기
(loginService.jsp 코드참고)
첫째, request.getRequestDispatcher("adminPage.jsp").forward(request, response);
둘째, <jsp:forward page="userPage.jsp" />
(login.jsp)
<body>
<form action="loginService.jsp">
<input type="text" name="id" placeholder="아이디" /><br>
<input type="password" name="pw" placeholder="비밀번호"><br>
<input type="radio" name="user" value="user"> 사용자
<input type="radio" name="user" value="admin"> 관리자 <br>
<input type="submit" value="로그인"/>
</form>
</body>
(loginService.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String user = request.getParameter("user");
if(user.equals("admin")){
request.setAttribute("param", "param_admin");
request.getRequestDispatcher("adminPage.jsp").forward(request, response);
}else{
%>
<jsp:forward page="userPage.jsp" >
<jsp:param value="param_user" name="param"/>
</jsp:forward>
<%
}
%>
(adminPage.jsp)
<body>
<h3>관리자로 로그인 성공</h3>
아이디 : <%= request.getParameter("id")%>
비밀번호 : <%= request.getParameter("pw")%>
라디오 : <%= request.getParameter("user")%>
매개변수 : <%= request.getParameter("param")%>
</body>
(userPage.jsp)
<body>
<h3>사용자로 로그인 성공</h3>
비밀번호 : <%=request.getParameter("pw") %><br>
사용자 : <%=request.getParameter("user") %><br>
아이디 : <%=request.getParameter("id") %><br>
매개변수 : <%=request.getParameter("param") %> <br>
<a href="login.jsp" > 이전 </a>
</body>
(참고 사이트)
https://dololak.tistory.com/502
[서블릿/JSP] RequestDispatcher란. RequestDispatcher로 forward() 하기
참고글 [서블릿/JSP] JSP 리다이렉트로 페이지 이동시키기 [서블릿/JSP] JSP 기본객체 종류 [HTTP] 리다이렉트(Redirect)란? RequestDispatcher란 RequestDispatcher는 클라이언트로부터 최초에 들어온 요청을 JSP..
dololak.tistory.com
https://zester7.tistory.com/33
HttpServletRequest, HttpServletResponse에 대한 이해
WAS가 웹브라우져로부터 Servlet요청을 받으면 요청을 받을 때 전달 받은 정보를 HttpServletRequest객체를 생성하여 저장 웹브라우져에게 응답을 돌려줄 HttpServletResponse객체를 생성(빈 객체) 생성된 Http
zester7.tistory.com
'Programming > JSP' 카테고리의 다른 글
[JSP] JSP 액션 태그 <jsp:useBean> (0) | 2022.10.17 |
---|---|
[JSP] Redirect와 forward의 차이점(+sendRedirect ) (0) | 2022.10.14 |
[JSP] JSTL와 JAR 다운방법 (0) | 2022.10.13 |
[JSP] 표현언어(EL, ${ })과 Scope(객체범위) (0) | 2022.10.12 |
[JSP] Tomcat을 이용한 Eclipse 웹 자바 개발환경 세팅하기 (0) | 2022.09.07 |