2012-12-05 3 views
7

내가 2 스프링 MVC 서비스를 말해봐? 두 번째 방법을 GET으로 사용하거나 세션을 사용하는 것은 바람직하지 않습니다.스프링 MVC는 GET/재/POST

답해 주셔서 감사합니다.

+1

정말 리디렉션이 필요합니까? 'firstMethod'에서'this.secondMethod (param)'을 호출하지 않는 이유는 무엇입니까? – Yevgeniy

+0

이 예제에서는 할 수 있습니다. 그러나'secondMethod'가'@ CookieValue'와 같은 많은 다른 매개 변수를 가지고 있다면 불편할 것입니다. – Nailgun

+0

@ Yevgeniy 자바 메소드를 호출 할 수없는 주된 이유는 사용자가 브라우저 주소 표시 줄에'/ secondMethod'를 갖기를 원한다는 것입니다. – Nailgun

답변

1

HTTP GET을 HTTP POST로 리디렉션하지 않아야합니다. HTTP GET과 HTTP POST는 두 가지가 있습니다. 그들은 매우 다르게 행동 할 것으로 기대됩니다 (GET은 안전하고, 멱등 원이며 캐시 가능합니다 .Post is Idempotent). 자세한 내용은 HTTP GET and POST semantics and limitations 또는 http://www.w3schools.com/tags/ref_httpmethods.asp을 참조하십시오.

다음과 같이 할 수 있습니다. secondMethod에 RequestMethod.GET 주석을 추가하십시오. 그런 다음 원하는 리디렉션을 만들 수 있어야합니다.

@RequestMapping(value = "/secondMethod", method = {RequestMethod.GET, RequestMethod.POST}) 
public String secondMethod(@RequestParam String param) { 
... 
} 

그러나 secondMethod는 HTTP GET 요청을 통해 호출 될 수 있습니다.

+0

POST 메소드를 n 번 호출하면 n 개의 업데이트가 발생하므로 POST는 멱등수가 아닙니다. –