forward
forwardTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "forwardSet.jsp" method="get">
<!-- <form action = "includeSet.jsp" method="get"> -->
id : <input type ="text" name ="id">
<input type = "submit" value ="전송">
</form>
</body>
</html>
forwardSet.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> --%>
<%@ taglib prefix="c" uri ="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--
<%
String id = request.getParameter("id");
%>
<h2>결과화면</h2>
<%
if(id.equals("admin")) {
%>
관리자님 환영합니다<br>
<%
} else {
%>
<%= id %>님 환영합니다<br>
<%
}
%>
--%>
<h2>결과 화면</h2>
<c:if test="${ param.id eq 'admin'}">
<jsp:forward page="admin.jsp"/>
</c:if>
<c:if test="${ param.id ne 'admin'}">
${ param.id }님 환영합니다.<br>
</c:if>
</body>
</html>
admin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>관리자님 환영합니다.</h2>
</body>
</html>
forwardSet.jsp에서
forward 했기 때문에, <h2>결과 화면</h2>가 나타나지 않는다.
response.sendRedirect
스크립트릿 내에서만 쓸 수 있음. (forward와 같은 기능)
그러나 다른 점이 있다.
요청-응답 사이클이 2번 일어나고,
redirect 받은 jsp는 request 영역에 접근할 수 없다.
==> 'test.jsp'와 'for.jsp'는 별개의 reqeust - response이기 때문에, request 공유영역에 접근할 수 없다.
==> 따라서, sendredirect를 사용하면서 변수를 공유하고자 한다면, 공유영역을 (session, application ) 등으로 올리거나
==> 파라미터를 넘겨주는 형태로 변수를 공유하여 사용할 수 있다.
'웹 프로그래밍 > JSP' 카테고리의 다른 글
[JSP] EL을 script 내에서 사용하려면, 쿼테이션으로 감싸야 한다 (0) | 2020.07.21 |
---|---|
[JSP] 쿠키와 세션 (0) | 2020.07.21 |
[JSP] HTML 코드 내에 javascript 사용 방법 (0) | 2020.07.21 |
[JSP] welcome-file-list 역할 (0) | 2020.07.21 |
[JSP] include(지시자와 액션태그) + jstl import (0) | 2020.07.21 |