반응형

서블릿의 스코프(scope)는 서블릿 API에 바인딩된 속성에 대한 접근 범위를 의미합니다.

ServletContext에 바인딩된 속성은 애플리케이션 전체에서 접근할 수 있으므로 애플리케이션 스코프를 갖습니다.

HttpServlet에 바인딩된 속성은 그 HttpSession에 해당하는 브라우저에만 접근할 수 있으므로 세션 스코프를 갖습니다. HttpServletRequest는 해당 요청/응답에 대해서만 접근하므로 리퀘스트 스코프를 갖습니다.

 

스코프의 기능

  • 로그인 상태 유지
  • 장바구니 기능
  • MVC의 Model과 VIew의 데이터 전달기능

 

스코프의 종류 해당 서블릿 API 속성의 스코프
애플리케이션 스코프 ServletContext 속성은 애플리케이션 전체에 대해 접근
세션 스코프 HttpSession 속성은 브라우저에서만 접근
리퀘스트 스코프 HttpServletRequest

속성은 해당 요청/응답 사이클에서만

접근

 

이제 코드로 작성해 보겠습니다

SetAttribute 클래스에 ServletContext, HttpSession, HttpServletRequest 객체의 setAttribute() 메서드를 이용해 속성을 바인딩 합니다.

두번째 서블릿인 GetAttribute 클래스를 다음과 같이 작성합니다. 각 서블릿 API들의 getAttribute() 메서드를 이용해 속성 이름으로 바인딩한 값을 가져와 브라우저로 출력하겠습니다.

브라우저에서 /set으로 요청해 속성을 바인딩하겠습니다.

Context와 Session 객체에 바인딩된 속성은 같은 브라우저에서 접근할 수 있으므로 값을 출력합니다. 그러나 기존에 바인딩된 request 객체는 /get으로 요청하여 생성된 request객체와 다르므로 null이 출력됩니다.

 

인터넷 익스플로러에서 /get을 요청한다면??

  익스플로러에서 요청했기 때문에 이번에는 크롬 세션 객체에는 접근할 수 없어 null을 출력합니다. 반면에 Context객체에 바인딩된 데이터는 모든 브라우저에 같은 결과를 출력하게 됩니다.

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

Filter API  (0) 2019.12.09
서블릿 URL pattern  (0) 2019.12.09
세션 로그인 session login  (0) 2019.12.09
세션을 이용한 로그인 정보 바인딩  (0) 2019.12.06
세션 유효 시간 재설정, 세션 삭제  (0) 2019.12.05
블로그 이미지

꽃꽂이하는개발자

,