14강 : Session

유태형·2022년 4월 7일
0

JSP

목록 보기
14/17

출처

해당 게시글은 모두 인프런 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp_renew/dashboard에 출처를 두고 있습니다. 간략히 정리한 글 입니다




내용

브라우저와 서버간 통신은 비동기 통신을 이용합니다. 1.클라이언트가 서버에 요청, 2. 서버가 클라이언트에 응답을 서로 그때만 전송을 하고 자기 할일을 합니다.

항상연결하지 않고 응답/요청 방식은 두가지의 큰 장점이 존재합니다.
첫째로 연결만하고 대기중인 시간을 없앰으로써 서버,클라이언트 각각 자원의 낭비를 줄일 수 있습니다.
둘째로 서버에 수천, 수만의 불특정 다수 클라이언트가 접속할 수 있게 해줍니다.

하지만 연결이 끊어짐으로 이전에 주고받았던 내용을 다시 불러와야하는 일이 발생합니다.

쿠키세션은 비동기통신에서 같은 역할을 수행하지만 이전에 주고받았던 내용을 어디에 저장하는지에 따라 다릅니다. 쿠키는 브라우저에 저장하지만 세션은 서버에 저장함으로써 세션은 더욱 더 강력한 보안을 제공합니다.



Session

로직과 메서드의 역할은 쿠키와 유사합니다. 이전에 주고받았던 정보가 존재하는지, 있는 경우 로그인 과정 생략, 없는 경우 로그인 과정 수행



Session 구현

세션이 존재하는지 먼저 확인합니다. 존재하면 바로 loginOk.jsp로 이동하고 없으면 입력 폼을 받아 세션을 관리하는 loginCon서블릿으로 데이터를 전송합니다.

세션객체는 인터페이스 HttpSession으로 가리킬 수 있습니다. 그리고 세션은 request객체에 포함되어 전달 됩니다. request.getSession()메서드로 반환받을 수 있습니다.
또한 session.setAttribute("키","값")으로 키와 값을 설정할 수 있습니다.

session.setAttribute("키","값")으로 속성을 설정할 수 있으면 당연하게도 session.getAttribute("키")로 속성의 값을 반환 받을 수 있습니다.

또한 세션은 클라이언트가아닌 서버에서 관리하므로 유효시간이 아닌 서버에서 삭제할 수 있고 보안상 그렇게 해야 합니다.
session.invalidate()메서드를 실행하면 이전에 저장해두었던 세션을 삭제합니다.




후기

CookieHttpSession를 통해 비동기 통신에서 연결성을 유지하는 방법에 대해 알았다. 우리가 흔히 사용하는 로그인, 관심상품 등등에서 세션이 자주사용되고 있었다.




GitHub

https://github.com/ds02168/Study_JSP/tree/master/14%EA%B0%95

profile
오늘도 내일도 화이팅!

0개의 댓글