JSP&Servlet

[JSP]4. cookie&session

CodeJaram 2023. 6. 23. 08:07

1. HTTP의 한계: 비연결형 프로토콜→페이지 연결한 후 연결종료하므로 정보유지 안 됨

 

2. cookie&session: client의 정보를 지속적으로 유지하기 위한 방법

 

3. cookie: 정보 저장위치→client PC

 

-전달할 데이터를 웹 브라우저(client)에 보냈다가 web server로 돌려받는 방법

-자원: Client의 자원을 사용하므로 서버에 영향을 주지 않음→유지비용↓

-저장형식: web 페이지 방문 시 브라우저에서의 정보들이 텍스트 파일에서만 저장가능

-보안에 취약하므로 중요하지 않은 정보만 저장해야 함

-용량: 쿠키 하나 당 4KBX300개=1.2MB

 

  • cookie 생성 및 동작 과정

client request(id,pw) 1 server
response(+cookie) 1
cookie 하드디스크에 저장
login
request 2(cookie 포함 요청)
mail
response(cookie 전달)

 

1)객체 생성하기: Cookie 쿠키 변수명=new Cookie("쿠키 이름", "쿠키 값");

-쿠키의 값이 한글이면 인코딩->URLEncoder 객체 사용

 

2)쿠키 유효기간 설정(초 단위): 쿠키 변수명.setMaxAge(설정시간)

-양수: 초 단위로 입력, 해당 시간만큼 쿠키 유지

-음수: 브라우저 종료 시 쿠키가 자동으로 제거됨

-0 : 쿠키 제거(유지시간이 0초이므로 제거된 거 같은 기능)

3)쿠키 전송: 응답할 때 쿠키를 전송하므로 response 객체 사용

-response.addCookie(쿠키 변수명);

 

4)쿠키 조회

쿠키 생성 실행 후 쿠키 조회를 실행해야 쿠키가 조회됨

-서버가 따로 요청하지 않아도 Cookie는 request 객체에 담겨서 전달됨

 

4. session: 정보 저장위치 →server PC

-web server에 있는 데이터 영역을 통해 데이터를 전달하는 방법→보안 강력함

-자원: Server의 자원을 사용하기 때문에 유지비용관리를 위해 중요한 정보만 저장

-용량: Server가 허용하는 범위 내에서 제한 없음

-저장형식: object→모든 객체를 담을 수 있음

 

  • 동작원리

-session이 이동하는 것이 아니라 session key를 담은 cookie가 이동하며 세션 유지

(session key)

 

  1)Session 객체 생성하기: HttpSession 세션 변수명=request.getSession()

 

  2)Session 생성: session.setAttribute(“세션 이름”, “세션 값”)

    -session의 값은 object 타입->모든 객체 가능

    -session의 이름이 중복되면 나중에 생성한 session으로 덮어쓰기됨

 

  3)Session 유효기간 설정(초 단위): 세션 변수명.setMaxInactiveInterval(설정시간)

 

  4)Session 조회

    -웹브라우저를 열고 있는 동안만 session 유지됨

   →세션 생성 실행 후 웹브라우저를 종료하지 않은 상태에서 세션 조회를 실행해야 함

   

    -session을 만든 웹페이지를 종료하면 session을 조회할 때 session 값이 null이 된다.

    -session 객체는 내장객체이므로 JSP에서는 객체를 생성할 필요가 없다.

    -session은 object 타입이므로 변수를 다른 타입으로 하고 싶으면 형변환해야 함

 

  5) Session 삭제

  • 특정 Session 삭제: session.removeAttribute("변수명");
  • 전체 Session 종료: session.invalidate();

'JSP&Servlet' 카테고리의 다른 글

[JSP]6. Maven&Mybatis  (0) 2023.06.27
[JSP]5. Scope  (0) 2023.06.26
[JSP]3. MVC 패턴으로 JDBC 만들기  (0) 2023.06.22
[JSP]2. 내장객체  (0) 2023.06.21
[JSP]1. JSP의 구성요소  (0) 2023.06.20