[Web] 8. step03_sessionTracking(3) - Session

진주·2022년 2월 9일
0

Web

목록 보기
9/17
post-custom-banner

Session 학습을 위해 추가적으로 만들 클래스

1) login.html 수정하기
2) LoginValidate2.java 생성하기
3) Welcome2.java 생성하기
4) Logout2.java 생성하기

http 프로토콜의 특성

  • 세션 기능이 적용되지 않은 http 프로토콜의 요청 처리 흐름

http 프로토콜은 연결되면 요청/응답을 한 뒤에 바로 연결을 종료시킨다.

클라이언트와 서버의 연결 정보를 유지하기위해 연결이 끊어지지않도록 유지할 수 있게 하는 것이 세션이다.

Session이란

쿠키와 마찬가지로, 클라이언트와 서버의 연결을 유지시켜주는 방법 중 하나이다.

쿠키가 웹 브라우저에 사용자의 상태를 유지하기 위한 정보를 저장했다면, 세션(session)은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.

http 프로토콜은 요청(클라이언트 → 서버) 1번, 응답(서버 → 클라이언트) 1번이 이루어지면 연결을 해제한다.
연결을 계속 유지할 경우에는 서버 과부하가 일어날 수 있기 때문이다.

때문에 기본 정보를 계속 유지할 방법이 필요한데, 요청과 응답이 이루어지고 나면 session을 사용해서 정보를 저장한다.

즉, 세션은 클라이언트와 서버 간의 접속을 유지시켜주는 역할을 한다.

쿠키와 달리 세션은 웹 컨테이너(서버)에서 만들어진다.

  • 세션 기능이 적용된 http 프로토콜의 요청 처리 흐름

session을 사용하는 이유

세션은 사용자의 정보를 유지하기 위해 javax.servlet.http 패키지의 HttpSession 인터페이스를 구현해서 사용한다.

쿠키는 사용자의 상태 유지를 위한 정보를 웹 브라우저에 저장해서 웹 서버가 쿠키 정보를 읽어서 사용한다.

이것은 웹 브라우저에 저장된 쿠키는 웹 서버에서 열어볼 수 있다는 점에서 보안상 문제가 발생할 수 있다.

따라서 사용자의 정보를 유지하기 위해서는 쿠키를 사용하는 것보다
세션을 사용한 웹 브라우저와 웹 서버의 상태 유지가 훨씬 안정적이고, 보안상의 문제도 해결할 수 있다.

session 메소드

① 생성 or 이미 생성되어있는 세션 반환
session 정보를 HttpSession이라는 인터페이스를 통해 담을수 있고, request객체에서 얻어올 수 있다.

HttpSession session = request.getSession();

② session에 정보를 저장 : setAttribute()
세션 영역에 해당 속성을 저장하는 것이 섹션 객체이다.

session.setAttribute("key", 모든 객체타입 가능);

③ session에 특정 데이터를 삭제 : removeAttribute()

session.removeAttribute("key")

④ 세션에 저장된 데이터(Object) 반환 : getAttribute()

session.getAttribute("key")

⑤ 세션 무효화 : invalidate()

session.invalidate();

⑥ 세션 유지시간 설정 : setMaxInactiveInterval()

세션의 유지 시간을 설정하는데 사용되는 코드, 초 단위로 인자 값 설정 가능

session.getMaxInactiveInterval();

⑦ 세션 유지시간 반환 : session.getMaxInactiveInterval();

session.getMaxInactiveInterval();

1) login.html 수정

login.html 결과

2) LoginValidate2.java 생성

3) Welcome.java 생성

4) Logout2.java 생성

결과

로그인 클릭

HttpSession session = request.getSession();
out.println("안녕하세요"+ session.getAttribute("name"));
		
out.println("<button onclick='location.href=\"logout2\"'>로그아웃</button>");

Welcome2.java의 ↑ 코드로 인해 "안녕하세요lee"와 "로그아웃"버튼이 보임

로그아웃 클릭

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("로그아웃 성공~");

Logout2.java의 ↑ 코드로 인해 "로그아웃 성공~"이 출력

[출처]
https://velog.io/@max9106/JSP-Session%EC%84%B8%EC%85%98-j0k5ccyiub
https://sowon-dev.github.io/2020/06/28/200629jspi/
https://xzio.tistory.com/71

profile
진주의 코딩일기
post-custom-banner

0개의 댓글