마트철수
[058] 세션, 쿠키, 포워딩 본문
2024.07.30(화)
JSP, Selvlet 3일차
스터디 때 한 번 설명을 들었던
세션, 쿠키에 대해서 배웠다.
그리고 RequestDispatch 클래스를
이용한 forward 방법도 !
스터디에 참여한 보람이 있구망 🥹
JSP, selvlet
PART01 시작하기
- CH01.1 웹 애플리케이션 개요
- CH01.2 웹 애플리케이션 프로젝트
PART02
- CH02.3 JSP 문법
PART03
- CH03.1 HTML5 Form 태그화 서블릿
- CH03.2 필터
PART04
- CH04.1 서블릿 고급 - 세션, 쿠키
- CH04.2 요청 포워딩, 리다이렉트
ch03.2 필터
필터
- 클라이언트와 서버 사이에서 request와 response 객체를 먼저 받아
사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것 - 다수의 Filter를 체인으로 연결 가능
Filter 인터페이스
- 필터 기능을 구현하는 데 핵심적인 역할
- Filter 인터페이스 메소드: init(), doFilter(), destroy()
뒤로 가기 구현하고 싶다면?
- filter에서 뒤로가기는 그냥 페이지만 다시 보여지는 것
- 새로고침을 눌러야 실행 시간을 알 수 있음
ch04.1 서블릿 고급 - 세션, 쿠키
세션 관리
세션
- 서버와 클라이언트 간의 지속적인 연결 상태를 가짐
- HttpSession 클래스를 이용한 세션 관리
- 서버는 브라우저를 식별함
- 언제 세션이 사라지는가? 브라우저가 종료할 때
서버에서 브라우저 종료 여부를 어떻게 아는지? Time-out을 정해둠 / 요청이 없으면 세션 제거 (기본 30분)
- 세션 관리 확인하는 방법
- 응용 프로그램, 네트워크
- Header에 쿠키 정보를 항상 붙여서 통신함(Key값은 JSSESION)
- Tomcat이 식별하는 것은 Browser(다른 창에 열려있으면 구분)

- 주요 메서드

※ 프로그램 지정단위는 '초' / xml 지정단위는 '분'
- 세션의 생성: 브라우저가 접속할 때 자동 생성
- 세션의 제거방법:
- time-out 지정
- invalidate() 메서드로 즉시 제거
- removeAttribute(name) 메서드로 특정 속성 값 제거
쿠키 관리
Cookie 클래스를 이용한 쿠키 처리 방법
- 사용자의 상태 정보를 클라이언트에서 관리
- 보안에 매우 취약
- 클라이언트의 브라우저 메모리나 OS파일에 저장 가능
(파일로 저장하고 싶다면? Timeout 지정해주면 됨) - 기본 저장은 브라우저 메모리 - 브라우저가 종료하면 자동으로 쿠키 제거
쿠키의 동작 과정

- Cookie(name, value): 쿠키 생성시 사용되는 생성자
- response.addCookie(cookie): 생성된 쿠키를 응답처리
▶ 응답할 때 - request.getCookies(): 클라이언트로부터 쿠키 정보를 배열로 리턴받음
▶ 요청할 때
※ 응답 처리에 따라 저장위치가 다름
// 쿠키를 응답처리
c.setMaxAge(60*60); -> OS파일에 저장
response.addCookie(c); -> 브라우저 메모리에 저장
장단점
- 세션: 보안에 강하다 / 서버의 부하가 증가한다
- 쿠키: 서버의 부하는 줄여준다 / 보안에 약하다
ch04.2 요청, 포워딩, 리다이렉트
웹 개발 모델
모델2
- 클라이언트의 요청 처리, 응답 처리, 비즈니스 로직 처리 부분을 모듈화한 구조
- 5번 단계덕분에 MVC 가능
JAVA에서 JSP로 페이지 이동하는 단계 (forward)
요청 포워딩
- RequestDispatch 클래스를 이용한 forward 방법
RequestDispatcher dis = request.getRequestDispatcher(target);
dis.forward(request, response);
- 지역변수, 전역변수
application scope (서버-전역변수) > session scope > request scope > page scope (지역변수)
리다이렉트
- HttpServletResponse 클래스를 이용한 redirect 방법
response.sendRedirect(target);- Request scope이 서로 다름
CartSaveServlet
// 세션객체 얻기
HttpSession session = request.getSession();
// get(속성을 가져올때)은 object를 받아오기 때문에 캐스팅 필요
ArrayList<String> list = (ArrayList<String>) session.getAttribute("product");
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [060] FrontController 그리고 Spring 시작 (1) | 2024.08.01 |
|---|---|
| [059] EL과 JSTL (0) | 2024.07.31 |
| [057] JSP 그리고 HTML5 Form 태그화 서블릿 (0) | 2024.07.29 |
| [056] 알고리즘: 암시적 그래프 (0) | 2024.07.26 |
| [055] 웹 애플리케이션 프로젝트 + JSP (0) | 2024.07.25 |