객체 범위 종류
웹 애플리케이션에는 4개의 객체 영역이 존재합니다.
( Application 영역 / Session 영역 / request 영역/ Page 영역 )
1) application 영역
하나의 애플리케이션 당 1개의 application 객체가 생성됩니다.
즉 같은 애플리케이션 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데 이를 애플리케이션 영역이라고 합니다.
(모든 Servlet, JSP에서 공유하는 영역)
- 애플리케이션이 종료되면 반환 (웹 서버가 종료될 때 까지 값이 유지된다.)
- request.getServletContext() 메서드를 호출하여 애플리케이션 영역에서 유효한 객체를 얻을 수 있습니다.
2) session 영역
하나의 브라우저 당 1개의 session 객체가 생성됩니다.
즉 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데 이를 세션 영역이라고 합니다.
- 세션이 종료되면 반환됩니다. (웹 브라우져가 종료될 때 또는 세션유지시간 동안 값이 유지된다.)
- requset.getSession() 메서드를 호출하여 세션 영역에서 유효한 객체를 얻을 수 있습니다.
3) request 영역
요청을 받아서 응답하기까지 객체가 유효한 영역입니다. (클라이언트에 응답할 때 까지)
- forward 또는 include를 사용하면 request 기본 객체가 공유되어서 request 영역이 됩니다.
- 지금까지 Servlet에서 JSP로 객체를 보낼 때 사용했던 방법입니다.
Servlet에서는 reqeust.setAttribute("이름", 객체); 로 전달하였고, (scope에 값 저장하기)
JSP에서는 Obejct obj = request.getAttribute("이름"); 으로 받았습니다.(scope에 값 꺼내오기)
이 때 사용했던 request 객체가 request 영역입니다.
4) page 영역
한 번의 브라우저 요청이 오면 하나의 JSP 페이지가 호출됩니다.
이 때 하나의 JSP 페이지 내에서만 객체를 공유하는 영역을 의미합니다 ( JSP only )
- JSP 파일에는 pageContext가 내장되어 있으며, 이 객체는 page 영역에서만 유효합니다.
- JSP 파일에 <% %> 안에 변수를 사용하면 이 변수는 해당 JSP 파일 내에서만 유효합니다.
** 스코프에 값 저장하기
xxx.setAttribute("이름",저장값);
** 스코프에 저장된 값 꺼내오기
Object xx.getAttribute("이름");
ex) String 형으로 받아오는경우 String val1 = (String)xx.getAttribute("이름"); 과 같이 형변환 시켜줘야합니다.
scope 범위는 page < request < session < application 순이라는 것을 알 수 있습니다.
참고 : http://victorydntmd.tistory.com/155
'JSP' 카테고리의 다른 글
[JSP/Servlet] Statement / PreparedStatement (0) | 2018.12.20 |
---|---|
[JSP/Servlet] PreparedStatement (0) | 2018.12.20 |
[JSP/Servlet] Select (0) | 2018.12.18 |
[JSP/Servlet] Oracle 연결 (0) | 2018.12.18 |
[JSP/Servlet]페이지이동 (2) | 2018.12.13 |