세션 시간을 설정한 후 로그인을 한 다음
세션이 끊긴다면 alert를 통해 경고창을 띄우고 로그인 화면으로 넘어가게 만들어 보았습니다.
WEB.xml
<!-- session Timeout -->
<session-config>
<session-timeout>3600</session-timeout>
</session-config>
- 저 같은 경우 web.xml 에 세션 타임아웃 시간을 설정하였습니다.
<session-timeout>3600</session-timeout>은 1시간을 의미하며 1당 1초라고 생각하시면 됩니다.
Controller
@GetMapping("/session-check")
@ResponseBody
public String sessionCheck(HttpSession session){
if(session.getAttribute("member") != null){
return "Session is still alive.";
}else{
return "Session is expired."
}
}
- 로그인 메서드에서 session.setAttribute 에서 첫 번째 매개변수 속성에 이름을 정한것을 getAttribute 값에 집어 넣어줍니다.
만약 세션이 살아 있다면 return "session is still alive" 세션이 끊겼다면 "Session is expired." 을 리턴 하게 하였습니다.
jsp 에서 ajax을 통해 서버와 통신하게 코드를 작성해주면 됩니다
JS
//세션 유지 확인 주기를 하기 위한 변수를 선언해줍니다
//여기선 1초에 1000ms가 되기에 1분마다 가져오기위해 60000의 값을 설정
const sessionCheckInterval = 60000;
function checkSession(){
$.ajax({
url:'/member/session-check',
success : function(data){
console.log('Session is still alive.');
},
error : function(xhr, status, error){
console.log('Session is expired.');
alert('세션이 만료되었습니다. 다시 로그인 해주세요');
window.location.href = '${path}/member/login';
}
});
}
//세션 확인을 주기적으로 실행
setInterval(checkSession, sessionCheckInterval);
- 먼저 세션을 주기적으로 서버와 통신 하면서 살았는지 죽었는지 확인 하기 위하여 변수 선언을 해주었습니다
이후 ajax를 통해 success,error 부분에서 각각 controller에 return값을 넣어 주었으며,
만약 세션이 끊겼다면 alert함수를 통해 경고창을 나타나게 하고, 확인 버튼을 누르면 로그인 창으로 가게 하였습니다.
- 마지막으로 setInterval() 함수를 사용하여 주기적으로 함수를 실행하게 하였습니다.
즉 sessionCheckInterval 변수에서 1분이라는 값을 선언하여 1분마다 ajax함수를 실행하게 하였습니다.
setInterval 에서 두 개의 매개변수를 받는데.
첫 번째는 실행할 함수, 두 번째는 실행간격 입니다.
※ajax의 url 부분에서 상대경로 로 하니 에러가 나서 절대경로 로 주었습니다....
'Spring > Study' 카테고리의 다른 글
| [Spring] 게시판 이미지 및 파일 등록 후 상세보기 페이지에서 해당 파일 다운로드 (0) | 2023.04.06 |
|---|---|
| [Spring]비밀번호 인코딩(BCryptPasswordEncoder 적용)-비밀번호 수정 (0) | 2023.03.19 |
| [Spring]장바구니 기능 구현 (0) | 2022.11.21 |
| [Spring]별점기능 구현 (0) | 2022.10.11 |
| [Spring]게시판 상단 고정 공지사항 구현 (0) | 2022.10.04 |