날아라쩡글이의 블로그입니다.

httpSession 본문

중앙 HTA (2106기) story/JSP story(Apache)

httpSession

날아라쩡글이 2021. 11. 18. 16:03
반응형

http는 클라이언트의 서버를 유지할 수 없다. 한번 응답을 하게 되면 끊게 되고, 클라이언트의 정보를 저장하지 않는ㄴ다. 

httpSession은 클라이언트의 정보를 보관하는 것이다. 

 

  1. 처음으로 응답 요청을 최초로 요청하게 될 경우 세션아이디가 포함되어있지 않다. 
  2. 세션아이디가 요청 객체에 존재하지 않은 상태로, 오청객체로 전달하게 된다. 
  3. httpsession객체가 없는 것을 보고 새롭게 생성한다. 
  4. HttpSession객체는 A의 전용의 객체로  16진수 32자리의 ID가 생성하게 된다. 
  5. 응답메세지를 전달할 경우 HTML컨텐츠가 포함되면서 JSessionID가 HEADER부에 존재하여 포함되어 전달하게된다.
  6. A 사용자인 브라우져가 재요청을 하게되는 경우 A객체의 ID를 가지고 있는 httpSession객체가 _JSPService에서 HttpSession의 session 객체와 연결을 하게 된다. 
  7. 그것을 통해서 객체에서 나머지의 객체들을 가져온다. 
  8. 객체의 안에는 각기 다른 전용의 저장소를 갖고 있어, 개인정보를 가져온다. 
  9. 클라이언트에 따라서 각기 다르게 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만 보낸다. 
      • 랜덤하게 만들어내기 때문에 개발자가 확인할 수 없다. 

속성과 스코프

객체에 따라서 삶의 길이가 다르다
노출범위가 다르다. 
공개범위가 다르다. 이것을 스코프라고 한다. 
위에 작성된것은 속성을 사용할 때, 입력할 때 사용하는 것이다. 요청파라미터와 초기화파라미터외에는 
동일한 속성 사용방법을 가지고 있다. 

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