이니페이 결제 모듈 붙이고 나서 결제 완료 페이지로 넘어가면서
자꾸 세션 만료되는 증상이 발생합니다.
@RequestMapping(value = "/myp/resDetail")
public ModelAndView resDetail(@RequestParam Map<String, Object> requestMap,HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("/myp/resDetail");
if(requestMap.get("id").equals("") && requestMap.get("id").equals(null)) {
response.sendRedirect("/myp/resList");
return null;
}
return mav;
}
결제 완료 페이지로 강제 접근하는 경우,
sendRedirectresponse.sendRedirect("/myp/resList"); 로 리스트 페이지로 redirect 시키면서
세션 ID값을 새로 만들어 로그인 하라는 메세지가 뜨게 됩니다.
sendRedirectresponse.sendRedirect("/myp/resList"); 는 response 객체의 함수로
페이지의 이동을 브라우저가 응답을받아 처리하면서 (브라우저 재요청)
요청 전 request 와 요청 후 requset가 다르게 됩니다.
@RequestMapping(value = "/myp/resDetail")
public ModelAndView resDetail(@RequestParam Map<String, Object> requestMap,HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView("/myp/resDetail");
if(requestMap.get("id").equals("") && requestMap.get("id").equals(null)) {
request.getRequestDispatcher("/myp/resList").forward(request, response);
return null;
}
return mav;
}
그래서 위와 같이
request.getRequestDispatcher("/myp/resList").forward(request, response);
를 사용하게 되는 경우, request 를 함께 보내줌으로써 세션을 유지할 수 있습니다.
서블릿에서 페이지 이동 시 아래 두 함수를 파악해서 사용하는 것이 좋습니다.
response.sendRedirect("/myp/resList");
request.getRequestDispatcher("/myp/resList").forward(request, response);
'프로그래밍 > JAVA' 카테고리의 다른 글
Spring Boot 텍스트 Captcha 적용 방법 (0) | 2024.08.16 |
---|---|
[JAVA] charset에 따른 bytes 길이 구하기 (0) | 2023.05.29 |
[JAVA] 파일 업로드 이미지 Quality 변경하기 (0) | 2023.02.18 |
[JAVA] 자바8에서 자바11로 버전 변경하기 (0) | 2022.08.16 |
댓글