Scope
저장 기능 + Life Cycle
Scope 종류 4가지
Scope
- Context/Application Scope - javax.servlet.ServletContextContext/Application scope begins when a webapp is started and ends when it is shutdown or reloaded. Parameters/attributes within the application scope will be available to all requests and sessions. The Context/Application object is available in a JSP page as an implicit object called application.
In a servlet, you can the object by calling getServletContext(). or by explicitly calling getServletConfig().getServletContext().
- Request Scope - javax.servlet.http.HttpServletRequestRequest scope begins when an HTTP request is received by a servlet and end when the servlet has delivered the HTTP response. With respect to the servlet life cycle, the request scope begins on entry to a servlet’s service() method and ends on the exit from that method. Request object is available in a JSP page as an implicit object called request.
A request object attribute can be set in a servlet and passed to a JSP within the same request. - Session Scope -javax.servlet.http.HttpSessionA session scope starts when a client (e.g. browser window) establishes connection with a webapp and continues till the point where the client, again read browser window, closes. Hence, session scope may span across multiple requests from the same client. In a servlet, you can get Session object by calling request.getSession() and in a JSP session.
- JSP page Scope - javax.servlet.jsp.PageContextThe page scope restricts the scpoe and lifetime of attributes to the same page where it was created. It is available in a JSP page as an implicit object called pageScope .
1. 컨텍스트/애플리케이션 범위 - javax.servlet.ServletContext
컨텍스트/애플리케이션 범위는 웹앱이 시작될 때 시작되고 종료되거나 다시 로드될 때 끝난다.
애플리케이션 범위 내의 매개변수/속성은 모든 요청 및 세션에서 사용할 수 있다.
컨텍스트/응용 프로그램 개체는 JSP 페이지에서 application 이라는 암시적 개체로 사용할 수 있다 .
서블릿에서 getServletContext()를 호출하여 객체를 만들 수 있다 .
또는 명시적으로 getServletConfig().getServletContext() 를 호출한다.
2. 요청 범위 - javax.servlet.http.HttpServletRequest
요청 범위는 서블릿이 HTTP 요청을 수신할 때 시작되고 서블릿이 HTTP 응답을 전달했을 때 끝난다.
서블릿 수명 주기와 관련하여 요청 범위는 서블릿의 service() 메서드에 들어갈 때 시작하여 해당 메서드에서 나갈 때 끝난다. 요청 객체는 JSP 페이지에서 요청 이라는 암시적 객체로 사용할 수 있다 .
요청 객체 속성은 서블릿에서 설정되고 동일한 요청 내에서 JSP로 전달될 수 있다.
3. 세션 범위 -javax.servlet.http.HttpSession
세션 범위는 클라이언트(예: 브라우저 창)가 웹앱과 연결을 설정할 때 시작되어 클라이언트가 다시 브라우저 창을 읽는 지점까지 계속된다. 따라서 세션 범위는 동일한 클라이언트의 여러 요청에 걸쳐 있을 수 있다. 서블릿에서 request.getSession() 을 호출 하고 JSP 세션 에서 Session 객체를 가져올 수 있다 .
4. JSP 페이지 범위 - javax.servlet.jsp.PageContext
페이지 범위는 속성의 scpo 및 수명을 생성된 동일한 페이지로 제한한다.
JSP 페이지에서 pageScope 라는 암시적 객체로 사용할 수 있다 .
① Application Scope : ServletContext → getServletContext( );
② Session Scope : HttpSession → requestgetSession( );
③ Request Scope : HttpServletRequest → doGet(request, );
④ Page Scope : (x) 자주 사용 안함
Scope Life Cycle
1) Servlet Context 생명주기는 web application과 동일
2) Http Session 생명주기는 Web Browser와 동일
3) HttpServletRequest 생명주기는 요청 후 응답까지
출처
* Servlet 범위 : http://www.umsl.edu/~siegelj/CS4010/Servlets/scope.html
* Servlet Life Cycle : https://velog.io/@woo00oo/%EC%84%9C%EB%B8%94%EB%A6%BF
+ 강의 교재
'AI Bootcamp > Servlet JSP' 카테고리의 다른 글
[Servlet JSP] Web Application에서 DB 연동_MyBatis (0) | 2022.02.09 |
---|---|
[Servlet JSP] Web Application에서 DB 연동_JDBC (0) | 2022.02.09 |
[Servlet JSP] Servlet 정의 (0) | 2022.02.08 |
[Servlet JSP] 500 Error (0) | 2022.02.08 |
[Servlet JSP] APR 기반 Apache Tomcat Native 라이브러리를 로드하지 못했습니다. (0) | 2022.02.07 |