JSP간 Parameter 전달
2017. 12. 1. 17:06ㆍ[개발] 지식/JSP
* GET/POST
GET방식 전송 방법
<script language = "javascript">
document.location.href = "abc.php?abc=12&bcd=34";
</script>
POST방식 전송 방법
<form name="form" action="abc.php" method="post">
<input type="hidden" name="abc" value="12”>
<input type="hidden" name="bcd" value="34">
</form>
<script language="javascript">
document.form.submit();
</script>
* Controller에서 Redirect
// POST 응답을 redirect 처리 할경우의 일반적인 처리 방법
public ModelAndView redirectTest( Map<String, Object> paramMap) {
return (ModelAndView)new ModelAndView("redirect:/" + Path.REDIRECT_PATH );
}
// RedirectView 를 이용한 방법
public ModelAndView redirectTest( Map<String, Object> paramMap) {
RedirectView rv = new RedirectView( Path.REDIRECT_PATH );
rv.setExposeModelAttributes(true);
return (ModelAndView)new ModelAndView(rv);
}
스프링 MVC에서 POST요청 응답을 Redirect로 처리할때 ModelAndView반환형식으로 처리하면
Request의 모든 파라미터가 붙어서 Redirect 되어 주소에 파라미터 정보가 보여지게 된다.
RedirectView클래스를 사용하여 setExposeModelAttributes 를 false로 선언해줌으로써 문제를 해결할 수 있다.
Redirect되는 주소 뒤에 파라미터가 붙지않은 상태로 Redirect 되어 진다.
즉 setExposeModelAttributes(false) 로 설정 하면, 직접 ?test=a&test=b 붙여서 작성 하는 부분은 파라미터가 붙지만, ModelAndView.addObject(attributeName, attributeValue) 로 추가 하는 부분은 파라미터가 생략 된다.
* RedirectAttributes.java
RedirectAttributes를 사용하면 파라미터를 노출하지 않고 redirect 할 수 있다.
하지만 session에 임시 저장 후 삭제 하는 프로세스를 거치기 때문에 '새로고침'하면 데이터는 사라질 수 있다.
@RequestMapping("/test.do")
public String sendTest(RedirectAttributes redirectAttributes){
redirectAttributes.addFlashAttribute("KeyName", "KeyValue");
return "redirect:/receive.do";
}
@RequestMapping("/receive.do")
public String receiveTest(){
return "resultJSP";
}
* Form 데이터를 controller에서 받기 (@RequestParam)
<body>
<form action="<%= request.getContextPath()%>/form/join.do">
아이디 : <input type="text" name="id" size="20"/><br/>
패스워드 : <input type="password" name="password" size="20"/><br/>
이름 : <input type="text" name="name" size="20"/> <br/>
<input type="submit" value="전송"/>
</form>
</body>
public String join(HttpServletRequest request,
@RequestParam("id") String id,
@RequestParam("password") String pass,
@RequestParam("name") String name) {
MemberVO member = new MemberVO();
member.setId(id);
member.setPassword(pass);
member.setName(name);
request.setAttribute("member", member);
return "form/memberInfo";
}
'[개발] 지식 > JSP' 카테고리의 다른 글
클라이언트에서 JSP간 페이지 이동(호출) 방법 (0) | 2017.12.01 |
---|
<