Backend/JSP

[JSP] 내장 객체 | Scope: page, request, session, application

코코무 2024. 2. 1. 09:34
page 영역

 

page 영역은 기본적으로 클라이언트 요청을 처리하는데 관여하는 jsp 페이지마다 하나씩 생성된다.

각 jsp 페이지는 page 영역을 사용하기 위한 pageContext 객체를 할당 받게 된다.

 

pageContext 객체에 저장된 정보는 해당 페이지에서만 사용할 수 있고(동일한 페이지에서만 공유) 페이지를 벗어나면 소멸된다.

include 지시어로 포함한 파일은 하나의 페이지로 통합되므로 page 영역이 공유된다.

저장: pageContext.setAttribute(name, value)
출력: pageContext.getAttribute(name)

 

 

 

 

request 영역

 

JSP에서 가장 많이 사용되는 객체이다. 브라우저가 전동한 요청 정보를 가지고 있다(정보 저장).

html이나 jsp 파일의 html 폼에 의해 입력된 값을 request 객체를 통해 가져온다.

 

클라이언트가 요청할 때마다 새로운 request 객체가 생성되고, 같은 요청을 처리하는 데 사용되는 모든 jsp 페이지가 공유된다.

request 영역에 저장된 정보는 현재 페이지와 포워드(전달)된 페이지까지 공유되는데 단, 페이지 이동 시에는 소멸되어 사용할 수 없게 된다. 하나의 요청에 대한 응답이 완료될 때 소멸된다(page 영역보다는 조금 넓다).

 

 

  • 포워드된 페이지에서 request 영역 속성 값 읽기

forward: 현재 페이지로 들어온 요청을 다음 페이지로 보내는 기능

request.getRequestDispatcher("포워드할 경로").forward(request, response)

포워드 시 쿼리스트링으로 매개변수도 전달 가능하다.

 

RequestDispatcher 객체는 요청을 다른 페이지로 넘겨주는 기능을 수행한다. String 속성은 main에서 삭제가 되었고 Person 객체는 문제없이 공유된다.

저장 : request.setAttribute(name, value)
출력 : request.getAttribute(name)

 

getParameter("name") HTML폼 중 name="name" 값을 가지고 있는 폼의 매개변수 값을 가져온다.
getMethod() 현재 요청(전송방식)이 get 방식인지 post 방식인지 알려준다.
getRequestURL() 호스트를 포함한 전체주소를 반환한다.
getRequestURI() 호스트를 제외한 전체주소를 반환한다.
getRequestDispatcher("주소").forward(request, response) "주소"로 포워드한다.

 

 

session 영역

 

클라이언트가 서버에 접속해 있는 상태 또는 단위를 말한다. 주로 회원인증 후 로그인 상태를 유지하는 처리에 사용된다. 포털 사이트에서 웹 브라우저를 닫으면 자동으로 로그아웃이 되는 이유가 이것 때문이다. 

 

클라이언트가 웹 브라우저를 최초로 열고 난 후 닫을 때까지 요청되는 모든 페이지는 session 객체를 공유할 수 있다.

저장 : session.setAttribute(name, value)
출력 : session.getAttribute(name)

 

 

 

 

application 영역

 

웹 애플리케이션은 단 하나의 application 객체만 생성(싱글톤)하고, 클라이언트가 요청하는 모든 페이지가 application 객체를 공유한다.

application 객체는 웹 서버를 시작할 때 만들어지며 웹 서버를 내릴 때 삭제된다. application에 한 번 저장된 정보는 페이지를 이동하거나 웹 브라우저를 닫았다가 새롭게 접속해도 삭제가 되지 않는다. 톰캣이 켜져있는 한, 값이 계속해서 저장되어 있다.

저장 : application.setAttribute(name, value)
출력 : application.getAttribute(name)
getInitParameter("name") "name"에 해당하는 초기화 매개변수를 읽어온다.
getInitParameterNames() 초기 매개변수들의 설정 이름을 열거객체로 읽어온다.
getRealPath("path") "path"의 물리적 경로를 반환한다.
getAttribute("name") "name"에 해당하는 값이 있으면 Object 형태로 반환한다.