해당 게시글은 모두 인프런 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌 https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp_renew/dashboard에 출처를 두고 있습니다. 간략히 정리한 글 입니다
브라우저와 서버간 통신은 비동기
통신을 이용합니다. 1.클라이언트가 서버에 요청
, 2. 서버가 클라이언트에 응답
을 서로 그때만 전송을 하고 자기 할일을 합니다.
항상연결하지 않고 응답/요청 방식은 두가지의 큰 장점이 존재합니다.
첫째로 연결만하고 대기중인 시간을 없앰으로써 서버,클라이언트 각각 자원의 낭비를 줄일 수 있습니다.
둘째로 서버에 수천, 수만의 불특정 다수 클라이언트가 접속할 수 있게 해줍니다.
하지만 연결이 끊어짐으로 이전에 주고받았던 내용을 다시 불러와야하는 일
이 발생합니다.
쿠키
와 세션
은 비동기통신에서 같은 역할을 수행하지만 이전에 주고받았던 내용을 어디에 저장하는지에 따라 다릅니다. 쿠키
는 브라우저에 저장하지만 세션
은 서버에 저장함으로써 세션
은 더욱 더 강력한 보안을 제공합니다.
로직과 메서드의 역할은 쿠키와 유사합니다. 이전에 주고받았던 정보가 존재하는지, 있는 경우 로그인 과정 생략, 없는 경우 로그인 과정 수행
세션이 존재하는지 먼저 확인합니다. 존재하면 바로 loginOk.jsp
로 이동하고 없으면 입력 폼을 받아 세션을 관리하는 loginCon
서블릿으로 데이터를 전송합니다.
세션객체는 인터페이스 HttpSession
으로 가리킬 수 있습니다. 그리고 세션은 request객체에 포함되어 전달 됩니다. request.getSession()
메서드로 반환받을 수 있습니다.
또한 session.setAttribute("키","값")
으로 키와 값을 설정할 수 있습니다.
session.setAttribute("키","값")
으로 속성을 설정할 수 있으면 당연하게도 session.getAttribute("키")
로 속성의 값을 반환 받을 수 있습니다.
또한 세션은 클라이언트가아닌 서버에서 관리하므로 유효시간이 아닌 서버에서 삭제
할 수 있고 보안상 그렇게 해야 합니다.
session.invalidate()
메서드를 실행하면 이전에 저장해두었던 세션을 삭제합니다.
Cookie
와HttpSession
를 통해 비동기 통신에서 연결성을 유지하는 방법에 대해 알았다. 우리가 흔히 사용하는 로그인, 관심상품 등등에서 세션이 자주사용되고 있었다.
https://github.com/ds02168/Study_JSP/tree/master/14%EA%B0%95