public String getUserInfo(@RequestParam HashMap<String, Object> param, Model model, RedirectAttributes redirect) throws Exception {
HashMap<String,Object> userInfo = loginService.getUserInfo(param);
if(param.get("userSeq").equals(null)){
param.put("userSeq",userInfo.get("USER_SEQ"));
}else{
param.put("userSeq",param.get("userSeq"));
}
/*최근접속일 update*/
loginService.addLastAccess(param);
session.setAttribute("userSeq", userInfo.get("USER_SEQ"));
session.setAttribute("user", userInfo.get("USER_ID"));
session.setAttribute("userRole", userInfo.get("USER_ROLE"));
session.setAttribute("userType", userInfo.get("USER_TYPE"));
redirect.addAllAttributes(param); // HashMap 형태로 모든 parameter 담음
//redirect.addAttribute() // 각 객별 Object, String param을 담을 경우
//redirect.addFlashAttribute("KeyName", "KeyValue"); // 1회성 parameter 새로 고침시에 사라짐
return "redirect:"+param.get("referer"); // 이전 페이지 url 정보
}
리다이렉트 전송시
GET방식
RedirectAttributes addAttribute를 사용하면 redirect get 구현이 가능합니다.
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(RedirectAttributes redirect) {
redirect.addAttribute("pageNum", 1);
return "redirect:/board/getBoardMain";
}
받는쪽은 RequestParam으로 매핑하면 됨
@RequestMapping(value="/getBoardMain", method=RequestMethod.GET)
public String getBoardMain(@RequestParam("pageNum") int pageNum, Model model) {
model.addAttribute("boards",service.getBoards());
model.addAttribute("boardCount", service.getBoardCount());
return "home";
}
POST방식
Spring3 에서 제공하는 RedirectAttributes addFlashAttribute 를 사용하면 redirect post 구현이 가능합니다.
하지만 일회성입니다.
새로고침하면 날라가는 데이터이므로 사용목적에 따라서 사용/불가능 판단을 잘 하셔야 할거 같습니다.
@RequestMapping("/redirectnewpage")
public String redirectnewpage(RedirectAttributes redirectAttributes){
Map<String, Object> map = new HashMap<String,Object>();
map.put("key1", "value1");
map.put("key2", "value2");
redirectAttributes.addFlashAttribute("vo", map);
return "redirect:/herepage";
}
출처: https://hellogk.tistory.com/86 [IT Code Storage]
출처: https://hellogk.tistory.com/86 [IT Code Storage]
<h2>Redirect 페이지</h2>
key1 :: ${vo.key1 }<br/>
key2 :: ${vo.key2 }
출처: https://hellogk.tistory.com/86 [IT Code Storage]
일회성 Parameter 사용하지 않는 POST 방식
중간에 데이터 처리 할 수 있는 임시페이지 생성해서 parameter를 hidden 으로 값을 세팅한 다음 post 로 바로 submit
@RequestMapping(value = "/getUserInfo")
public String getUserInfo(@RequestParam HashMap<String, Object> param, Model model) throws Exception {
HashMap<String,Object> userInfo = loginService.getUserInfo(param);
if(param.get("userSeq").equals(null)){
param.put("userSeq",userInfo.get("USER_SEQ"));
}else{
param.put("userSeq",param.get("userSeq"));
}
/*최근접속일 update*/
loginService.addLastAccess(param);
session.setAttribute("userSeq", userInfo.get("USER_SEQ"));
session.setAttribute("user", userInfo.get("USER_ID"));
session.setAttribute("userRole", userInfo.get("USER_ROLE"));
session.setAttribute("userType", userInfo.get("USER_TYPE"));
model.addAllAttributes(param);
return "/login/loginProc";
}
loginProc.jsp
<script type="text/javascript">
$(document).ready(function(){
$("#frm").submit();
});
</script>
<form id="frm" name="frm" action="${param.referer}" method="POST">
<input type="hidden" id="cmtSeq" name="cmtSeq" value="${param.cmtSeq}">
<input type="hidden" id="userSeq" name="userSeq" value="${param.userSeq}">
</form>
'Java > Spring' 카테고리의 다른 글
[스프링 웹 개발 기초] 정적 컨텐츠 (0) | 2021.03.24 |
---|---|
[View 환경설정] view 기본 동작환경 (0) | 2021.03.24 |
JAR WAR 차이 (0) | 2021.03.24 |
Gradle로 빌드하고 실행하기 (0) | 2021.03.24 |
Chrome 양식 다시 제출 확인 ERR_CACHE_MISS 해결방법 (0) | 2021.01.27 |