현재
[JSP] tomcat 저장공간 Application, Session, Request, Page 본문
<Application>
● 웹 어플리케이션 전체에서 공유되는 데이터를 저장하는데 사용
● 웹 어플리케이션이 시작되고 종료될때까지 데이터가 유지된다.
● 주로 설정 정보나 공통 데이터와 같은 전역 데이터를 저장하기 위해 사용
<Session>
● 웹 어플리케이션의 각 세션에 대한 데이터를 저장하는데 사용한다.
● 세션의 범위는 사용자가 웹 어플리케이션에 로그인한 시점부터 로그아웃 할때까지 데이터가 저장된다.
<Request>
● 현재 HTTP의 요청과 관련된 데이터를 저장하는데 사용된다.
● 데이터는 현재 요청에 대해서만 유효하고, 요청이 처리되면 사라진다.
<Page>
● JSP 페이지 내에서만 유효한 데이터를 저장하는데 사용
● 페이지가 렌더링되고 응답(response)이 클라이언트로 전달되면 사라진다.
● PageContext 객체를 통해 페이지 범위 데이터에 접근하고 관리가 가능하다.
webapp/setAttr.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//tomcat에서 제공하는 4가지 저장공간(서버쪽 저장공간, 소멸시기가 다름)
//application : 어플리케이션(웹 브라우저)
// 저장되는 변수는 글로벌이고 한번이라도 set을 하면
// tomcat이 서버를 킬때부터 끌때까지 저장된다.
// (이때 다른 브라우저에서 접속해도 변수는 남아있음)
// 하지만 이러나 저러나 안씀( 보통은 Java에서 static으로 처리함)
application.setAttribute("v1", "!!어플!! 저장");
//session (핵심) : session(특정활동시간)이 종료되었다 = 내 접속이 종료 되었다.
// A가 접속하면 A라는 특정 공간을 생성, A가 종료하면 A공간 소멸
// 인증정보를 저장할때 사용!! 그래서 로그인 하면 UI가 바뀜
session.setAttribute("v2", "@@세션@@ 저장");
//request (MVC모델에서 핵심) : 요청당 생기고 요청이 끝나면 사라짐(접속자 수와 상관없음)
// LifeCycle이 엄청 짧다.
// controller에서 받은거를 view로 출력하고 싶다.
// view는 java코드 가 아니라 바로 출력할 수 없다.
// 그래서 Model로 request를 보내고(java코드를 실행하고 데이터처리) view의 jsp를 포워딩한다.
//
// redirect할때는 절때 request공간에 담지않음(의미가 없음 소멸이 빨라서)
request.setAttribute("v3", "##리퀘스트## 저장");
//page :
pageContext.setAttribute("v4", "%%페이지%% 저장");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
set Attr 실행댐!!
</body>
</html>
webapp/getAttr.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//String v1 = application.getAttribute("v1"); // 스트링 - 오브젝트로 타입 미스매칭
//할당되는 값이 없으면 null값 리턴
String v1 = (String)application.getAttribute("v1");
//System.out.println("v1: " + v1);
String v2 = (String)session.getAttribute("v2");
//System.out.println("v2: " + v2);
String v3 = (String)request.getAttribute("v3");
//System.out.println("v3: " + v3);
//lifeCycle이 죽음
String v4 = (String)pageContext.getAttribute("v4");
//System.out.println("v4: " + v4);
//lifeCycle이 죽음
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
get attr 실행댐!!
<br>application storage 값: <%=v1%><br> <!-- 변수에 쓰면 out.print -->
<br>session storage 값: <%=v2%><br> <!-- 변수에 쓰면 out.print -->
<br>request storage 값: <%=v3%><br> <!-- 변수에 쓰면 out.print -->
<br>page storage 값: <%=v4%><br> <!-- 변수에 쓰면 out.print -->
</body>
</html>'웹 프로그래밍 > JSP' 카테고리의 다른 글
| [JSP] EL(Expression Language) (0) | 2023.10.19 |
|---|---|
| [JSP] Cookie (0) | 2023.10.18 |
| [JSP] forward, redirect (0) | 2023.10.18 |
| [JSP] include, header, footer (0) | 2023.10.18 |
| [JSP] get, post, QueryString, form 및 데이터 전송 (1) | 2023.10.18 |