날아라쩡글이의 블로그입니다.
httpSession 본문
728x90
반응형
http는 클라이언트의 서버를 유지할 수 없다. 한번 응답을 하게 되면 끊게 되고, 클라이언트의 정보를 저장하지 않는ㄴ다.
httpSession은 클라이언트의 정보를 보관하는 것이다.
- 처음으로 응답 요청을 최초로 요청하게 될 경우 세션아이디가 포함되어있지 않다.
- 세션아이디가 요청 객체에 존재하지 않은 상태로, 오청객체로 전달하게 된다.
- httpsession객체가 없는 것을 보고 새롭게 생성한다.
- HttpSession객체는 A의 전용의 객체로 16진수 32자리의 ID가 생성하게 된다.
- 응답메세지를 전달할 경우 HTML컨텐츠가 포함되면서 JSessionID가 HEADER부에 존재하여 포함되어 전달하게된다.
- A 사용자인 브라우져가 재요청을 하게되는 경우 A객체의 ID를 가지고 있는 httpSession객체가 _JSPService에서 HttpSession의 session 객체와 연결을 하게 된다.
- 그것을 통해서 객체에서 나머지의 객체들을 가져온다.
- 객체의 안에는 각기 다른 전용의 저장소를 갖고 있어, 개인정보를 가져온다.
- 클라이언트에 따라서 각기 다르게 ID를 생성하여 전달해준다.
객체
PageContext pageContext
- JSP페이지에 대한 정보를 포함하는 객체이다.
- auto size, paging encoding방식의 값등이 포함하고 있다.
ServletContext application
- 웹 프로젝트당 하나씩 생성되는 객체이다.
- 웹 어플리케이션 당 생성되는 객체이다.
- 웹 어플리케이션의 정보를 포함하고 있다.
- 배포될 떄 식별자의 정보와 web페이지의 정보를 가지고 있다.
httpSession session
- 사용자, 클라이언트당 하나씩 생성되는 객체이다.
- client의 정보를 저장하는 객체이다.
ServletConfig config
- JSP에 대한 초기화 파라미터의 정보를 포함한다.
- JSP당 한씩 생성되는 객체이다.
JSPWriter out
- out이란 이름으로 보관된다.
- 클라이언트와 연결된 텍스트 전용의 출력스트림으로 HTML컨텐츠를 클라이언트로 보낸다.
WEB서버에는 Session의 경우 브라우져마다 고유의 객체의 정보 저장소가 만들어진다.
- 절대로 다른 브라우져가 변경할 수 없다.
- 개발자가 JsessionID를 안다고 하더라도, 임의로 정보를 변경할 수 없다.
- 접속한 브라우져의 객체만큼 httpsession이 생성된다.
- 로그인할 때 , 접속할 때 만들어질수 있지만 default의 값은 접속시에 생성된다이다.
- jsp실행시 내장객체 획득하는 과정에서 요청아이디를 기반으로 session이 연결된다.
- 그럼 session에서는 뭐를 할까?
- 개인정보를 저장한다.
- 로그인한 클라이언트의 id를 저장한다.
- A사용자가 누군지 확인할 때는 접속할 때 저장객체에서 ID를 꺼내서 확인한다.
랜덤으로 정해진 JSPsessionID지만, 누군지 구별가능하다. - 로그인이 완료된 ID를 넘기게 되며 클라이언트외에는 확인할 수 없다.
- 연결요청한 A가 누구인지 알수 있다.
- 처음에 요청할 때 인증하면, 자신의 아이디와 비번을 보내고, 이후로는 자신의 정보를 네트워크를 주고받을필요가 없다. 이후로는 sessionID만 보낸다.
- 랜덤하게 만들어내기 때문에 개발자가 확인할 수 없다.
- 그럼 session에서는 뭐를 할까?
속성과 스코프
객체에 따라서 삶의 길이가 다르다
노출범위가 다르다.
공개범위가 다르다. 이것을 스코프라고 한다.
위에 작성된것은 속성을 사용할 때, 입력할 때 사용하는 것이다. 요청파라미터와 초기화파라미터외에는
동일한 속성 사용방법을 가지고 있다.
HttpServletRequest, Reponse
- 요청이 완료되면 생성후 사라진다.
- 요청이 접수후에 생성된다. 응답이 완료시 폐기되는 객체이다
- 매번 반복적으로 진행된다.
- 요청파라미터 : 폼입력값, 쿼리스트링이 입력 값이 분석후에 저장된다.
- 요청메세지를 분석해서 입력이 들어가고 임의로 사용하지 않는다.
- getParameter을 이용하여 값을 뺄 수 있다.
- 기본값은 문자열이다.
- 속성 : 객체가 저장된다.
- 임의의 값을 빼서 사용할 수 있다
- 요청이 접수되면 생성된다.
- 응답이 완료될 때 까지 사용한다.
- 요청파라미터와 속성을 저장할 수 있다.
- 응답이 완료될때까지 A.jsp - > B.jsp로 내부이동이 가능하다.
- JSP에서 다른 JSP로 포워드 이동(내부이동)했을 경우 다른 JSP에서도 사용가능하다.
PageContext pageContext
- JSP가 실행하는 동안만 생성되어 있는 객체이다.
그때만 사용이 가능하다. - 속성을 저장하고 조회할 수 있다.
- JSP객체당 하나씩 생성된다
- _JSPservice가 생성시 생성된다.
- JSP가 폐기될 떄 폐기가 된다.
- JSPService (request, response)가 생성될 때 생성된다.
- JSPService (request, response)실행동안만 사용한다.
- 속성을 저장할 수 있다 -> 페이지를 이동할 때 사용하는 스코프이다.
- PageContext는 그 객체안에서만 사용하고, 나중에 포워드 이동시에는 사용이 가능하다.
ServletContext application
- 웹어플리케이션 프로젝트당 하나씩 생성되는 객체이다.
- 생명이 제일 길다.
- 웹서버가 가동될 때 생성된다.
- 웹서버가 중지될 때 폐기된다.
- 모든 클라이언트/ JSP/ 서블릿/ 필터에서 접근이 가능한 객체이다.
- 속성을 저장하고, 초기화 파라미터가 저장된다.
- 웹서버가 가동되는 동안에는 언제나 사용이 가능하다.
- 초기화 파라미터와 속성을 저장할 수 있다.
- 모든 클라이언트와 모든 JSP에서 사용이 가능하다.
- 그렇기 때문에 로그인의 객체로 사용할 수 없다.
httpSession session
- 클라이언트당 하나씩 생성되는 것이다.
- 최초 접속시 자동으로 생성되는 것이다.
- 로그아웃은 브라우져가 닫을 때 삭제된다.
- 일정시간이상의 요청이 없으면 폐기된다.
- 속성을 저장할 수 있다.
- 객체 저장하면 빼서 사용할 수 있다. 숫자, 문자, vo,배열, 콜렉션을 담을 수 있다.
- 브라우져가 닫으면 이용할 수 없다. 기본 세션 객체의 이용불가 하다.
- 닫는 순간 jsessionId를 잃어버린다.
- Timeout이 존재해서 타임아웃시 사라진다.
- 일반포탈은 30분, 1시간이고, 은행은 4분, 5을 가지고 있다.
- 최초 요청시 혹은 사용자 인증 완료시에 생성된다.
- 전략과 정책에 따라서 다르다.
- 로그아웃 전까지 사용가능하다.
- 특정 클라이언트의 전용의 객체이다.
- 속성을 저장할 수 있다.
- 로그아웃 전이라면 모든 JSP에서 사용이 가능하다.
Tomcat이 _JSPservice의 메소드를 호출할 때 전달한 요청객체와 응답객체, 이 메소드에서 자체적으로 생성되는 PageContext객체, 요청을 보낸 클라이언트 전용의 httpSession객체, 웹서버가 가동될 때 생성된 ServletContext객체를 사용한다.
모든 JSP에서는 사용가능하다.
속성과 스코프
- 속성을 사용하는 방법은 동일하다.
- 속성은 어느객체에 저장했는지에 따라서 이용범위와 지속시간이 달라진다. 이것을 해당속성의 스코프라고 한다.
- PageContext scope
- 해당 JSP내에서만 사용이 가능하다.
- Httpservlet Request scope
- 응답이 완료되기 전까지 사용이 가능하다.
- HttpSession scope
- 로그인에 활용된다.
- 로그아웃까지 사용이 가능하다.
- ServletContext scope
- 웹서버가 실행되는 동안 사용이 가능하다.
반응형
'중앙 HTA (2106기) story > JSP story(Apache)' 카테고리의 다른 글
JsessionID (0) | 2021.11.18 |
---|---|
비밀번호 단방향 암호화키 만들기 (0) | 2021.11.18 |
bootstrap설정하기 (0) | 2021.11.16 |
절대주소와 상대주소 (0) | 2021.11.15 |
paging처리하기, 페이징처리하기 (0) | 2021.11.12 |
Comments