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
<