application

Mia Lee·2021년 12월 17일
0

JSP

목록 보기
12/22
<%@ 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>applicationTest.jsp</h1>
	<!-- 
	application 객체
	- 웹 어플리케이션 서버(WAS = 웹컨테이너 = 톰캣)에 대한 정보를 관리하는 객체
	- 웹 어플리케이션 당(= 프로젝트) 하나의 application 객체만 생성됨
	  => 어플리케이션 전체 영역에서 하나의 객체를 공유함
	- 서버가 시작되면 application 객체가 생성되고, 서버가 중단되면 객체가 제거됨
	-->
	<h3>서버 정보 : <%=application.getServerInfo() %></h3>
	<h3>서버 물리적 경로 정보 : <%=application.getRealPath("/") %></h3>
	<h3>서버 컨텍스트 경로 정보 : <%=application.getContextPath() %></h3>
</body>
</html>


<%@ 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>내장 객체 중 영역 객체의 속성</h1>
	<!-- 
	영역(Scope) 객체
	- 내장 객체 중 각기 다른 영역(Scope) 을 갖는 4대 영역 객체(page, request, session, application)
	- 각 영역 객체에 저장되는 데이터를 속성(Attribute) 이라고 함
	
	1. page(= pageContext) 객체
	   - 현재 페이지 정보를 저장하고 관리하는 객체
	   - 현재 페이지에서만 접근 가능
	     => 페이지가 변경되면 현재 페이지 정보가 저장된 page 객체가 제거되므로
	        현재 페이지 정보는 사라지고, 새로운 페이지 정보가 저장됨
	
	2. request 객체(매우 중요!)
	   - 현재의 요청(request) 정보를 저장하고 관리하는 객체
	   - 현재 요청부터 응답(response)페이지까지는 접근 가능
	     ex) "a.jsp" 페이지의 form 태그에서 "b.jsp" 페이지로 요청이 발생할 경우 
	         새로운 request 객체가 생성되고 응답 페이지인 "b.jsp" 페이지까지 request 객체가 유지됨 
	     => 새로운 요청이 발생하면 기존 request 객체가 제거되므로
	        기존에 저장되어 있던 요청 정보가 사라지고 새로운 request 정보가 생성됨
	        (새로운 요청이란? response.sendRedirect() 메서드로 이동, 하이퍼링크로 이동 등) 
	   - 주의사항!
	     <form> 태그 또는 URL 을 통해 전달된 파라미터값은 request.getParameter() 메서드로 가져오고
	     request.setAttribute() 메서드로 저장되어 전달된 데이터는
	     request.getAttribute() 메서드로 가져와야한다!
	     
	        
	3. session 객체(중요!)
	   - 클라이언트와 서버 간의 연결 정보를 저장하고 관리하는 객체
	   - 페이지와 무관하게 웹브라우저가 동작하는 동안 유지되는 객체
	   - 웹브라우저를 완전히 종료하거나, 세션 타이머가 만료되거나(기본값 30분 = 1800초),
	     invalidate() 메서드를 호출하여 세션을 초기화하면 session 객체 정보가 제거됨
	   - ex) 로그인 시 세션에 아이디를 저장하고, 로그아웃 수행 시 세션에 저장된 아이디를 제거
	     ex2) 쇼핑몰에서 비회원 상태에서 장바구니에 상품을 담고, 웹브라우저 종료 시 장바구니 제거
	
	4. application 객체
	   - 웹 어플리케이션 서버의 정보를 저장하고 관리하는 객체
	   - 서버가 시작(start)되면 객체가 생성되고, 서버가 종료(stop)되면 객체가 제거됨
	   - 페이지 또는 세션과 무관하게 사용 가능함
	   - ex) 웹사이트 접속자 수 카운팅 등
	============================================================================================
	
	< 영역 객체의 공통 메서드 >
	1. setAttribute(String key, Object value)
	   - key 에 해당하는 이름으로 value 에 해당하는 데이터를 저장(= 매핑) 
	   - key 에 해당하는 이름은 객체의 데이터를 구분하는 용도로 사용하며
	     중복되는 key 값이 지정될 경우, 기존의 데이터를 덮어쓰게 됨
	     => 하나의 key 에 저장될 수 있는 데이터는 동시에 하나뿐이다!
	   - Object 타입으로 전달되는 value(데이터)는 모든 타입을 사용 가능(= 만능 타입)
	   ex) 사물함의 특정 번호(key)에 물건(value)을 저장하는 것 
	   
	2. Object getAttribute(String key)
	   - key 에 해당하는 value 값(= 데이터)을 리턴하기(= 가져오기)
	   - 리턴타입이 Object 타입(어떤 데이터든 모두 Object 타입으로 리턴됨)
	     => 따라서, 상황에 따라 형변환 연산자 등을 통해 데이터타입을 변환해야할 수 있음
	   ex) 사물함의 번호를 key 로 사용하여 사물함 내에 저장된 물건(= value)을 가져오는 것
	
	3. removeAttribute(String key)
	   - key 값으로 등록되어 있는 key 와 value 를 모두 제거
	-->
	
	<%
	// 각 영역 객체에 값을 저장 => setAttribute(String key, Object value) 메서드 사용
	pageContext.setAttribute("pageValue", "pageContext value");
	request.setAttribute("requestValue", "request value");
	session.setAttribute("sessionValue", "session value");
	application.setAttribute("applicationValue", "application value");
	%>
	
	<!-- 각 영역 객체에 저장된 값을 가져오기 => Object getAttribute(String key) 메서드 사용 -->
	<h3>pageContext 객체 값 : <%=pageContext.getAttribute("pageValue") %></h3>
	<h3>request 객체 값 : <%=request.getAttribute("requestValue") %></h3>
	<h3>session 객체 값 : <%=session.getAttribute("sessionValue") %></h3>
	<h3>application 객체 값 : <%=application.getAttribute("applicationValue") %></h3>
	
	<%
	// pageContext 객체의 forward() 메서드를 호출하여 "attributeTest2.jsp" 페이지로 이동
	pageContext.forward("attributeTest2.jsp");
	// => request 객체를 다음페이지까지 유지(= 공유)하기 위해서 forward() 메서드로 이동
	%>
</body>
</html>




<%@ 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>attributeTest2.jsp</h1>
	<!-- 각 영역 객체에 저장된 값을 가져오기 => Object getAttribute(String key) 메서드 사용 -->
	<h3>pageContext 객체 값 : <%=pageContext.getAttribute("pageValue") %></h3>
	<h3>request 객체 값 : <%=request.getAttribute("requestValue") %></h3>
	<h3>session 객체 값 : <%=session.getAttribute("sessionValue") %></h3>
	<h3>application 객체 값 : <%=application.getAttribute("applicationValue") %></h3>
</body>
</html>





























0개의 댓글