-
#RedirectAttributes로 화면에 일회성 msg 전달SPRING-BOOT 2021. 5. 7. 17:20
session 만료 기능 개발 중 한가지 문제에 직면하였다.
session을 만료하고 만료msg를 전달하던 기능을 구현하였는데 get방식으로 redirect기능을 구현하여 새로고침시 계속 msg가 표출되는 문제였다.
이 문제를 해결하기위해 검색하던도중 RedirectAttributes라는 것을 알게 되었고 이기능을 사용하여 아래 처럼 문제를 해결하였다.
/** * redirect 세션 만료 MSG 전달 */ @RequestMapping("/sessionExpired") public String sessionExpiredView(RedirectAttributes rttr) { rttr.addFlashAttribute("systemMsg", "세션이 만료되었습니다."); return "redirect:/"; } /** * loginView view */ @RequestMapping("/") public ModelAndView loginView(HttpServletRequest request, @RequestParam Map<String, Object> param) { ModelAndView mav = new ModelAndView("login/login"); String sendPath = ""; HttpSession httpSession = request.getSession(false); if(httpSession != null) { String adminId = (String) httpSession.getAttribute("admin_id"); if(!StringUtil.isNullOrBlank(adminId)) { //세션 있음 sendPath = "redirect:/companyView.do"; mav.setViewName(sendPath); } } String msgCode = request.getParameter("msgCd"); if(!StringUtil.isNullOrBlank(msgCode)) { System.out.println("loginView : " + msgCode); if("duplicate".equals(msgCode)) { mav.addObject("msg", "동일한 아이디로 로그인되어 자동 로그아웃 됩니다."); } } return mav; }
RedirectAttributes에 대해 알아보자
· addFlashAttribute()
- url뒤에 parameter를 추가하지 않아도됨.
- 리다이렉트 직전 플래시에 저장하는 메소드다.
- 리다이렉트 이후에는 소멸한다.
'SPRING-BOOT' 카테고리의 다른 글
intellij에서 gitignore 쉽게 설정하기. (0) 2021.05.14 실전 2 - 10 QueryDSL 소개 (0) 2021.03.12 #실전 2 - 9 스프링 데이터 JPA 소개 (0) 2021.03.12 #실전2 - 8 OSIV와 성능 최적화 (0) 2021.03.12 #실전2 - 7 컬렉션 조회 최적화 (0) 2021.03.09