본문 바로가기

Web Application

Filter, session, cookie

*필터(Filter)

  브라우저 -> 요청(선처리)-> 필터 -> 서블릿 ->응답(후처리)

 

*필터사용법

  1. implements Filter{} 

  2.추상메서드 구현

  3. web.xml에 서블릿처럼 등록해야한다.

 

*세션관리(session tracking)

1) 개요: 현재페이지(jsp/servlet)에서 생성된 data는 이후의 페이지에서 사용불가. 

  why? 랜더링이 끊겼기 때문. - Http프로토콜 특징 -connectionLESS 및 StateLess 때문이다.

  세션관리는 끊어지지 않은것처럼 서로 연결하는것이 특징이다.

2) 구현

  *클라이언트에 저장(쿠키-cookie) - Cookie API

  *서버에 저장(세션-session) - HttpSession API

  세션은 톰캣 컨테이너에 있는 메모리를 이용함.

  상황:

  브라우저 - (a작업, b작업)==톰캣 컨테이너(톰캣 메모리=세션) 

 

A작업(저장하는 역할):

  세션얻기 : HttpSesioon session = request.getSession(); -> 있으면 재사용, 없으면 새로 생성

  세션에 데이터 저장: session.SetAttribute("x" , 값) 

 

B작업(B이외의 나머지 작업->A에 저장한 데이터를 사용하는 역할들):

  세션얻기 HttpSession session= request.getSession();

  세션에서 data 얻기: a = session.getAttribute("x")

  만약 null(x): A를 거침. 정상적인 요청

        null(o): "x"가 없는 경우이다. 이는 A 작업을 거치지 않고 직접 B작업을 요청한 경우이다.

  따라서 위의 상황에 맞게 if문으로 처리해줘야 한다.

  if(a=null){

     response.sendRedirect("A"); // 로그인 화면으로 가게끔 처리(예시)

  }else { a작업을 사용하는 코드}

 

*쿠키(cookie)

  -문자열만 저장(key/value)

  -도메인(사이트) 당 최대 300개까지 저장가능.

  -단점.: 문자열만 저장 가능하며, 사용자가 쿠키사용을 비활성 시킬 수 있다. 그러면 저장이 안됨.

  ==> 보안이 취약하다. 

쿠키의 사용 예=> 로그인 및 id 저장, 관심상품 보여주기.

세션관리는 세션+쿠키 혼용사용 하도록 하자.

 

*쿠키 사용:

상황:

브라우저 -> 요청 -> (A작업, B작업)톰캣 컨테이너

A작업: 쿠키생성 및 쿠키 저장 코드

생성 코드: Cookie c = new Cookie(k,v);

저장 코드: response.addCookie(c);

클라이언드가 휘발성으로 사용할지, 비휘발성으로 사용할지는 응답 코드로 정한다.

브라우저에 의존하면 휘발성, 파일에 외존하면 비휘발성이다.

쿠키 역시 타임아웃으로 사용할 수 있으며 쿠키 객체.setMaxAge(시간)으로 얼마나 사용할지 정할 수 있다.

위 setMaxAge로 쿠키를 설정하면, 파일에 저장(비휘발성) 되어 브라우저를 닫고 다시 열어도 쿠키가 살아있다.

 

'Web Application' 카테고리의 다른 글

파일 업로드  (0) 2022.08.11
Jsp 화면 재사용 및 태그 종류  (0) 2022.08.10
mybatis 시작  (0) 2022.08.05
Servlet & Jsp 위임(forward, redirect)  (0) 2022.08.04
절대경로, 상대경로, Scope, Jsp코드  (0) 2022.08.03