로그인 로그아웃시 세션 생성 및 세션 삭제 방법.. 오랜만에 구현하려고 했더니 생각이 안나서 다시 정리해봤다.
웹브라우저에서 클라인언트로부터 서버로 요청이 들어오면 서버에서는 HttpServletRequeset가 생성되며, 요청정보에 있는 PATH로 맵핑된 서블렛에게 전달된다.
즉 Client가 Server로 요청을 보내면 해당 Client의 요청에 맞는 Servlet으로 데이터가 전달되는데
해당 데이터를 Server 측에서 HttpServletRequest로 요청을 받아 들일수 있다. 해당 Client의 요청 데이터를
HttpServletRequest res의 getParameter("변수명") 으로 받을수 있다
String value = res.getParameter("name");
또한 Model을 통해서 Server에서 얻은 데이터를 Client에게 보낼수 있다.
model.addAtrribute("Client에서 사용할 변수명", "Client에게 보낼 값");
또한 Session이란
웹사이트의 여러페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 말하며, 사용자가 브라우저를 닫아 서버와의
연결을 종료하는 시점까지를 세션이라고 합니다.
세션은 서비스가 돌아가는 서버측에 데이터를 저장하고, 세션의 키값을 클라이언트 측에 남겨두고,
브라우저는 해당 내용을 필요시에 Key값을 이용하여 서버에 저장된 데이터를 사용하게 됩니다.
Client 의 요청이 들어오면 Server는 Session id 를 생성하여 Server에 Session-id와 데이터를저장하고
Client에게 set-cookie 값으로 Session-id를 반환해준다. Client는 다음 요청부터 전달받은 Session-id 쿠키를 자동으로
헤더에 추가하여 요청하고, Server는 Session-id값을 저장된 세션저장소에서 찾아보고 유효한 요청인지 확인 후
응답한다.
Server에서 Session을 생성하기 위해서는
HttpSession 객체 사용하거나,
HttpServletRequest 객체를 통해서 getSession() 을 통해서 HttpSession 객체를 생성 할 수 있습니다.
생성된 Session을 통해서 (HttpSession)
.setAttribute("저장할Session-id","저장할 값"); 이렇게 setAttribute를 통해서 세션에 데이터를 저장할 수 있습니다.
해당 세션에 값이 저장되어 있는지 확인하기 위해서는
.getAttribute("저장했던 Session-id"); 를 통해서 세션에 데이터가 저장되어 있는지 확인 할 수 있습니다.
생성된 세션값을 로그아웃 할때 삭제를 해줘야 합니다. 그래야 브라우저에 새로운 세션을 생성할 수 있습니다.
세션값을 삭제 하는 방법으론
removeAttribute(String name); 을 통해서 저장했던 Session-id를 매개변수로 입력해주면서 해당 Session-id만 삭제할 수있습니다.
또한 모든 세션을 삭제할떄는
invalidate(); 를 통해서 해당 세션을 모두 삭제 할 수 있습니다.
'dev > Spring' 카테고리의 다른 글
[Spring] HTTP/ TOMCAT 전반적인 내용 (0) | 2022.05.20 |
---|---|
[Spring] HttpServletRequest, HttpServletResponse (0) | 2022.05.19 |
[Spring] Bean 생성 (0) | 2022.03.04 |
[JUnit] JUnit 사용하여 단위테스트 하기 (0) | 2022.03.02 |
[Spring] Controller Exception처리 (0) | 2022.01.20 |