본문 바로가기

Programming/JSP

DAY 111. JSP - 내장 객체, 영역 스코프

 

 

JSP 내장 객체

JSP가 자바 코드로 자동으로 생성될 때(서블릿으로 변환될 때), 자바 파일에 자동으로 추가되는 객체들을 내장 객체라고 한다.

즉, JSP 페이지 내부에서 개발자가 직접 선언하지 않아도 바로 사용이 가능한 객체를 내장 객체라고 한다.

자동으로 이미 선언되어 있기 때문에, 동일한 이름으로 변수를 선언하면 에러가 발생한다.

 

✔️ request

웹 브라우저(사용자)의 요청 정보를 저장하고 있는 객체이다.

 

✔️ response

웹 브라우저의 요청에 대한 (클라이언트에게 보내줄) 응답을 나타내는 객체이다.

 

✔️ session

웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체이다.

브라우저가 처음 켜고 나서 종료할 때 까지 상태가 유지된다.

 

 

[ABOUT HTTP 프로토콜]

- Stateless 특성 : 클라이언트가 서버에 요청을 하면, 서버는 요청을 보고 응답을 한다.
이 때, 클라이언트에 대한 상태가 서버에 저장(유지)되지 않는다.
즉, 한 번 요청에 대한 응답을 하면 클라이언트와의 관계는 유지되지 않는다.

로그인이나 장바구니 기능들은 클라이언트의 상태가 유지되어야 하는 프로그램에는 HTTP만 가지고는 구현하기가 어렵다.
따라서 상태를 유지하지 않는 HTTP의 상태 특성 때문에 클라이언트과 서버의 상태(관계)를 유지하기 위한 기능이 세션이다.

(similar. cookie) 브라우저 단위로 세션이 생성된다. 브라우저를 닫고 다시 열면 세션을 다시 만들게 된다.

** 세션 : 서버와 클라이언트와의 관계를 서버에 저장한다.
** 쿠키 : 서버와 클라이언트와의 관계를 클라이언트(사용자)에서 관리한다.

 

 

<!-- 세션 생성 메소드 : isNew() : true 또는 false를 리턴한다. -->
<!-- 처음 생성한 세션이면 true, 브라우저가 새로고침 되면 false -->
<%= session.isNew() %>

<!-- 세션 ID -->
<%= session.getId() %>

<!-- 세선 생성 시간 -->
<%= new Date(session.getCreationTime()) %>

<!-- 최종 접속 시간 --> 
<%= new Date(session.getLastAccessedTime()) %>

 

 

✔️ out

화면에 출력을 위한 출력 스트림 객체이다.

 

✔️ application

웹 애플리케이션(컨텍스트)의 실행 환경을 제공하는 서버의 정보와 서버 측 자원에 대한 정보를 저장하고 있는 객체이다.

애플리케이션이 실행되고 종료될 때까지 유지되는 객체이다.

 

✔️ config

JSP 페이지에 대한 설정 정보를 저장하고 있는 객체이다.

JSP 페이지가 서블릿으로 변환되면서 서블릿 인스턴스가 생성될 때, 참조해야 될 초기 값이 있으면 config에 저장한다.

생성자들이 참조해야 되는 초기 값들이 있으면 페이지 별로 지정할 수 있다.

 

 

<!-- web.xml 파일에 서블릿 등록 및 매핑 -->
<servlet>
		<servlet-name>configTest</servlet-name>	
		<jsp-file>/views/objects/index.jsp</jsp-file>
		
		<init-param>
			<param-name>name</param-name>
			<param-value>이산아</param-value>
		</init-param>
</servlet>
	
<servlet-mapping>
		<servlet-name>configTest</servlet-name>
		<url-pattern>/views/objects</url-pattern>
</servlet-mapping>

 

 

✔️ page

JSP 페이지를 구현한 서블릿 인스턴스 자체를 참조하는 객체이다.(page = this;)

final java.lang.Object page = this;

 

✔️ exception

JSP 페이지에서 예외가 발생했을 때 에러 페이지에 전달되는 객체이다. isErrorPage="true"로 설정되어 있어야 한다.

 

✔️ pageContext

JSP 페이지와 관련된 다른 내장 객체를 얻어내거나 | 현재 페이지의 요청과 응답에 제어권을 다른 페이지로 넘겨주는 데(forward) 사용되는 객체이다.

 

 


 

JSP 내장 객체 영역

해당 객체에 정의된 유효 범위 안에서 필요한 데이터를 저장하거나 읽어 들이고, 서로 같은 영역 안에서는 데이터를 공유할 수 있다.

이 공유되는 데이터를 속성(Attribute)라고 하며 속성을 공유할 수 있는 유효 범위를 영역(Scope) 이라고 한다.

** 스코프(Scope)가 큰 순서 : application > session > request > page

 

 

 


 

 

※ [참고1]

 

.JSP 파일

서블릿으로 바뀐다.

_jspService() 메소드가 호출되면서

request, response 객체가 매개값으로 존재한다. (정확히는 javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponset response)

 

따라서 .JSP 페이지에서 별도의 선언이나 import 없이 request객체와 response 객체에 사용, 접근 할 수 있다. (이러한 객체들을 내장 객체라고 한다.)

 

사용자가 보낸 요청의 값을 읽어올 때는 request의 .getParameter("속성명") 메소드를 사용하면 된다.

전송 방식 method가 "post"인 경우, 브라우저에서 인코딩해서 넘겨주는 방식이 아니기 때문에

값을 읽어올 .jsp 페이지에서 request.setCharacterEncoding("utf-8"); 인코딩 설정을 해줘야 한다.

 

 

※ [참고2]

http://localhost:8088/02_JSP/파일위치

 

프로토콜 : http://

도메인(IP) : localhost (현재 PC)

포트번호 : 8088

Context Path : 02_JSP

파일 : 파일 위치

 

외부에서 pc 요청할 때는 pc의 도메인이나 IP를 알아야 한다.

만약, 톰캣 위에서 여러 개의 웹 애플리케이션이 실행 될 때, 구분하는 방법은 Context Path이다.

Context Path의 RootWebContent 폴더이다.

폴더명만 지정하고 파일명이 없으면 이 때는 welcome file을 찾아서 보여준다.

'Programming > JSP' 카테고리의 다른 글

DAY 131. JSP - Redirect와 Forward의 차이점  (0) 2021.12.27
DAY 112. JSP - EL/JSTL  (0) 2021.12.08
DAY 107. JSP - 기본 개념  (0) 2021.12.03