현재

[JSP] tomcat 저장공간 Application, Session, Request, Page 본문

웹 프로그래밍/JSP

[JSP] tomcat 저장공간 Application, Session, Request, Page

AAAge 2023. 10. 18. 18:35

<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