>  기사  >  Java  >  SpringMVC 전달과 리디렉션의 차이점은 무엇입니까?

SpringMVC 전달과 리디렉션의 차이점은 무엇입니까?

零下一度
零下一度원래의
2017-06-28 10:13:371770검색

서블릿에서는 요청과 응답을 통해 전달과 리디렉션이 수행됩니다. 두 가지의 차이점은 이전 기사를 참조하세요. 그렇다면 springMVC에서는 어떻게 이루어지나요?

/**앞으로**/

@RequestMapping("/login.do")

public String login(HttpServletRequest 요청,HttpServletResponse 응답){

request.setAttribute("message", "hello");

return "forward:/index.do"; //forward는 점프 후 메시지 값을 얻을 수 있습니다.

}

index.do는 RequestMapping의 값인 또 다른 경로입니다.

@RequestMapping("/index.do")

public String index(HttpServletRequest 요청,HttpServletResponse 응답){

return "welcome";

}

/**리디렉션**/

@RequestMapping( "/logout.do")

public String logout(HttpServletRequest 요청,HttpServletResponse 응답){

request.setAttribute("message", "hello");

return "redirect:/register.do"; Jump

}

register.do가 RequestMapping의 값인 다른 경로 이후에 메시지 값을 얻을 수 없습니다.

@RequestMapping("/register.do")

public String Register(HttpServletRequest request,HttpServletResponse response){

return "register";

}

또한 앞으로 점프 후에도 주소 표시줄 URL은 변경되지 않습니다. 하지만 리디렉션은 변경됩니다

리디렉션을 사용하면 세션에 배치되지 않는 한 백그라운드에서 페이지에 전달된 모든 매개변수가 손실됩니다. 따라서 springMVC에는 다음과 같은 해결책이 있습니다:

@RequestMapping("/update.do")

public String update( RedirectAttributesredirectAttributes) {

redirectAttributes.addFlashAttribute("message", "Operation 성공적인");

return "redirect:/admin/user";

}

리디렉션된 페이지에서 메시지의 값을 얻을 수 있습니다. 이는 Spring이 메시지를 세션에 넣기 때문입니다.

위 내용은 SpringMVC 전달과 리디렉션의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.