*필터(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 |