본문 바로가기
프로그래밍/JAVA

[JAVA] 결제모듈 세션 만료 오류

by yun5o 2020. 8. 24.

이니페이 결제 모듈 붙이고 나서 결제 완료 페이지로 넘어가면서

자꾸 세션 만료되는 증상이 발생합니다.

 

@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);

 

 

댓글