JSP페이지에서 사용되는 객체들은 JSP 내장 객체이든 페이지 내에서 만들어졌던 간에 모두 정해진 영역 안에서만 사용 가능


값 저장 방법

주 사용 용도


Request(forward)








→ EL문법 쓸려면 위에 두 줄 안써도된다.
pageScope1.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>
<%
// page 영역에 값 저장
// pageContext
pageContext.setAttribute("nick", "페이지 영역");
// page 영역에서 값 가져오기
String nick = (String)pageContext.getAttribute("nick");
%>
닉네임 : <%= nick %> <br>
닉네임(EL) : ${nick} <br>
<a href="Ex01_pageScope2.jsp"> 2페이지로 이동 </a>
</body>
</html>
pageScope2.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>
<%
String nick = (String)pageContext.getAttribute("nick");
%>
닉네임 : <%= nick %>
</body>
</html>
requestScope1.jsp
<%@page import="org.apache.tomcat.util.http.fileupload.servlet.ServletRequestContext"%>
<%@page import="org.apache.tomcat.util.http.fileupload.RequestContext"%>
<%@ 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>
<%
// request 영역에 값 저장하기
request.setAttribute("nick", "request영역");
// request 영역에서 값 가져오기
String nick = (String)request.getAttribute("nick");
// forward 방식으로 페이지 이동
RequestDispatcher rd = request.getRequestDispatcher("Ex02_requestScope2.jsp");
rd.forward(request, response);
%>
<!-- 화면에 출력! + EL문법으로도 출력 -->
닉네임 : <%= nick %> <br>
닉네임(EL) : ${nick} <br> <!-- request.setAttribute("nick", "request영역"); 여기꺼 가져오는거임 -->
<a href="Ex02_requestScope2.jsp"> 2페이지로 이동 </a>
</body>
</html>
requestScope2.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>
<%
String nick = (String)request.getAttribute("nick");
%>
닉네임 : <%= nick %>
</body>
</html>
sessionScope1.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>
<%
session.setAttribute("nick", "session영역");
String nick = (String)session.getAttribute("nick");
%>
닉네임 : <%= nick %> <br>
닉네임(EL) : ${sessionScope.nick} <br>
<a href="Ex03_sessionScope2.jsp"> 2페이지로 이동 </a>
</body>
</html>
sessionScope2.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>
<%
String nick = (String)session.getAttribute("nick");
%>
닉네임 : <%= nick %>
</body>
</html>
applicationScope1.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>
<%
application.setAttribute("nick", "application영역");
String nick = (String)application.getAttribute("nick");
%>
닉네임 : <%= nick %> <br>
닉네임(EL) : ${applicationScope.nick} <br>
<a href="Ex04_applicationScope2.jsp"> 2페이지로 이동 </a>
</body>
</html>
applicationScope2.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>
<%
String nick = (String)application.getAttribute("nick");
%>
닉네임 : <%= nick %>
</body>
</html>
foward.jsp(foward 정리)
<%@ 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>
<h1> forward 방식 </h1>
<ul>
<li> 요청이 들어오면 서버 내에서 이동해야 할 페이지로 알아서 이동 </li>
<li> 요청이 1번, 처음 요청했던 request객체에 담긴 정보(id, pw 등...)가 유효함 </li>
<li> 요청이 1번이라서 네트워크 트래픽이 발생 X, 실행속도가 빠름 </li>
<li> request객체를 사용하기 때문에 Object타입으로 모든 객체를 담을 수 있음 </li>
<li> 단점 : 서버내에서만 이동이 가능 -> 외부서버로 이동 불가능 </li>
</ul>
<% request.getRequestDispatcher("http://www.naver.com").forward(request, response); %>
<hr>
<h1> sendRedirect 방식 </h1>
<ul>
<li> 요청이 들어오면 서버에서 이동해야 할 페이지를 응답해서 다시 요청할 수 있도록 함 </li>
<li> 요청이 2번, 서로 다른 request객체이기 때문에 데이터 전송할 때 쿼리스트링 방식을 사용해야 함 </li>
<li> 요청이 2번이라서 네트워크 트래픽이 발생 O, 실행속도가 느림 </li>
<li> 쿼리스트링 방식을 사용하기 때문에 Text형태로만 데이터 전송 가능 </li>
<li> 이동 할 페이지를 새롭게 요청하기 때문에, 다른 서버의 페이지로 이동 가능 </li>
</ul>
</body>
</html>