본문 바로가기
프로젝트 진행 공부/Servlet & JSP

6장 상태 정보 유지 기술

by 인생즐겜러 2022. 10. 24.
728x90
반응형

HTTP 프로토콜의 통신 방식은

클라이트에게 서버가 응답을 보내는 즉시 끊어지기 떄문에

연결 상태가 유지되지 않는 무상태 통신 방식이다.

때문에 전 요청의 처리 결과가 저장이 되지 않는다.

고로 해당 결과를 서버/클라이언트에 저장하는 정보를 상태 정보라고 함

 

 

 

 

저장 위치에 따른 저장 기술

(1) 클라이언트 - 쿠키

   javax.servlet.http.Cookie

(2) 서버 

   javax.servlet.ServletContext

   javax.servlet.http.HttpSession

   javax.servlet.http.HttpServletRequest

 

 

 

유지 기간에 따른 저장 기술

(1) 웹 애플리케이션 단위

   javax.servlet.ServletContext

(2) 클라이언트 단위

   javax.servlet.http.Cookie

   javax.servlet.http.HttpSession

(3) 요청 단위

   javax.servlet.http.HttpServletRequest

 

 

 

 

 


 

 

 

 

 

ServletContext

  • 서블릿 컨테이너와 통신하기 위해서 사용되는 메소드를 지원하는 인터페이스
  • 웹 어플리케이션 단위로 자동 생성/ 중지될 때 소멸
  • 웹 어플리케이션 내에 모든 서블릿 간 정보 공유, 정보 추출을 할 수 있게 한다.
  • ServletConfig 객체에서 ServletContext 객체의 주솟값을 추출 - getServletContext 이용
    (ServletConfig 사용 방법과 동일. init() 으로 추출 / HttpServlet 통해서 추출)



 

<context-param>

ServletContext 객체에 변수를 설정할 때 사용하는 태그

웹 어플리케이션 서비스 시작과 동시에 처리해야 하는 값을 전달하고자 할 때 사용

 

 

 

getInitParameter() : ServletContext 객체에 설정한 변수 추출

getMajorVersion() : WAS에서 지원하는 서블릿의 Major 버전 정보 반환

getMinorVersion() : WAS에서 지원하는 서블릿의 Minor 버전 정보 반환

getServerInfo() : 현재 사용 중인 서블릿 컨테이너의 이름과 버전 정보 반환

getContextPath() : 웹 어플리케이션을 찾아가기 위해 사용하는 경로 반환

getServletContextName() : <display-name>로 둘러쌓인 웹 어플리케이션 이름 반환 

getRealpath() : URI의 실제 물리적인 경로 반환

 

 

 

 

 

ServletContext  객체에 등록 / 추출 / 삭제 메소드

void setAttribute(String 데이터이름, Object 공유하기 위한 데이터) : 데이터 등록 메소드

Object getAttribute(String 데이터이름) : 데이터 추출 메소드

void removeAttribute(String 데이터이름) : 데이터 삭제 메소드

 

 

 

 

 


 

 

 

 

 

Cookie

 

  • 클라이언트 단위로 정보 유지가 필요할 때 사용한다
  • 클라이언트 요청 정보의 헤더에 포함되어 전달 된다.
  • 설정 시 name = value 로 구성
  • 만료 날짜, 유효경로, 보안필드 등을 추가 지정 가능

 

 

 

 

 

쿠키를 써야하는 상황들

  • 방문한 적 있는 웹서버에 재 방문 시 몇번째 방문인지 알아야하는 때
  • 회원 가입에서 자동으로 주소, 전화번호 등을 입력하는 때
  • 로그인~ 로그 아웃까지 인증 상태 유지
  • 쇼핑몰에서 장바구니 선택한 상품 정보 유지
  • 쇼핑몰에서 클라이언트가 체크한 상품 정보 유지

 

 

 

 

 


 

 

 

 

 

Session

 

  • HttpSession 객체는 getSession() 을 이용하여 생성
  • HttpSession 객체 생성 시 세션 ID가 생성되어 클라이언트에 쿠키로 부여
  • 클라이언트 별로 상태정보를 개별 유지하는 기술을 세션 트래킹이라고 함.

 

 

 

 

 

HttpServletRequest의 getSession()

클라이언트가 가진 세션 ID와 동일한 세션 객체를 찾아서 주솟값을 반환

세션이 없다면 새로 생성 후 반환

만약 getSession(boolean 매개변수) 인데 세션이 없다면

매개변수가 true => 동작이 같음. 새로 생성 후 반환

false =>  생성하지 않고 null 반환

 

 

 

 

 


 

 

 

 

 

쿠키와 세션의 차이

 

  쿠키 세션
저장 위치 클라이언트 서버
저장 데이터 타입 텍스트 객체
저장 데이터 크기 제한 있음 서버에 수용 가능한 만큼

 

 

 

 

 


 

 

 

 

 

HttpServletRequest

 

기본적으로 service()가 실행 될 때 생성 되고 종료 될 때 사라진다.

고로, 한 번의 요청으로 여러 페이지가 실행될 때, 페이지 간에 데이터를 공유하기 위해 사용하는 방법

 

 

 

요청 재지정

클라이언트의 요청에 대해 서버에 존재하는 다른 자원으로 요청을 재지정하는 것

해당 기능을 제공하는 객체는 HttpServletRequest / RequestDispatcher

 

 

 

 

 

HttpServletRequest  요청 재지정 메소드 (동일한 웹 어플리케이션/서버가 아니어도 됨)

접근자 및 타입 메소드 설명
public void sendRedirect(String 위치) 위치에 설정된 자원으로 요청 재지정 
public String encodeRedirectURL(String url) url에 설정된 URL 문자열에 세션 ID 정보를 추가 후 요청 재지정

 

 

 

 

 

RequestDispatcher 요청 재지정 메소드 (동일한 웹 어플리케이션이여야 됨)

접근자 및 타입 메소드 설명
public void forward(ServletRequest req, ServletResponse resp) 요청을 다른 자원으로 넘긴다.
그 다른 자원의 응답이 클라이언트에게 간다.
public void include(ServletRequest req, ServletResponse resp) 다른 자원의 처리 결과를 현재 페이지에 포함 시킨다.
응답은 현재 페이지 + 다른 자원 처리 까지 나온다.

 

 

 

RequestDispatcher 객체 생성 메소드

ServletContext 객체에서 제공 메소드

RequestDispatcher  getNameDispatcher(String name)

RequestDispatcher  getRequestDispatcher(String path)

 

ServletRequest 객체에서 제공 메소드

RequestDispatcher  getRequestDispatcher(String path)

 

 

 

 

 

 

 

728x90
반응형

'프로젝트 진행 공부 > Servlet & JSP' 카테고리의 다른 글

8장 JSP 프로그래밍  (0) 2022.10.27
7장 필터 / 리스너 / 오류처리  (0) 2022.10.27
5장 서블릿 설정과 변수  (0) 2022.10.24
4장  (0) 2022.10.24
1~3장  (0) 2022.10.19

댓글