스프링 mvc 요청 전달 및 방향 변경

요청 리디렉션과 요청 전달 비교, HttpServletResponse.sendRedirect 메서드 및 RequestDispatcher.forward 방법은 브라우저에서 다른 URL이 가리키는 자원을 얻을 수 있지만 이들의 내부 운영 메커니즘은 큰 차이가 있다.
1.RequestDispatcher.forward 방법은 요청을 같은 웹 응용 프로그램의 구성 요소인 HttpServletResponse에만 전달할 수 있습니다.sendRedirect는 현재 응용 프로그램의 다른 자원뿐만 아니라 같은 사이트의 다른 응용 프로그램의 자원도 리셋할 수 있습니다. 심지어 절대 URL을 사용하여 다른 사이트의 자원도 리셋할 수 있습니다.sendRedirect의 경우 "/"로 시작하는 URL은 전체 웹 사이트에 대한 루트 디렉터리입니다.forward의 경우 전달된 URL이'/'으로 시작하면 현재 웹 응용 프로그램에 대한 루트 디렉터리입니다.
2. sendRedirect가 브라우저에 대한 응답은 다른 URL에 대한 접근 요청을 다시 보내는 것입니다. forward는 서버 측 내부에서 요청을 다른 자원에 전송합니다. 브라우저는 요청만 보내고 응답 결과를 얻었습니다.
3. forward의 호출자와 피호출자 간에 같은request 대상과response 대상을 공유하는데 그들은 같은 방문 요청과 응답 과정에 속한다.sendRedirect의 호출자와 피호출자는 각자의 request와response 대상을 사용하고 두 개의 독립된 접근 요청과 응답 과정에 속한다
리디렉션 요청은redirect:로 시작하고, 전송 요청은forward:로 시작합니다.
예제는 다음과 같습니다.

@RequestMapping(value="/users")
@Controller
public class UserController {

  @RequestMapping(value="/queryuser",method = RequestMethod.GET)
  public String queryuser(Model model) throws Exception {
    return "forward:/users/uc";
  }

  @RequestMapping(value="/uc",method = RequestMethod.GET)
  public String quer(Model model) throws Exception {

    return "redirect:/#/home";
  }

   @RequestMapping(value = "/save", method = RequestMethod.GET) 
    public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response) throws Exception { 
      ModelAndView mv = new ModelAndView("forward:/users/uc");// forward  
//    ModelAndView mv = new ModelAndView("redirect:/#/home");//redirect  
      return mv; 
    } 
} 

이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기