首先明白请求转发是一次请求,地址栏不会发生变化,区别于重定向。​springmvc环境自行配置。

以下举例中存在如下文件/WEB-INF/pages/success.jsp

请求转发的第一种情况:请求转发经过视图解析器

 前端页面

<a href="${pageContext.request.contextPath}/forwardMvcView">请求转发经过视图解析器</a>

后台代码

@RequestMapping("/forwardMvcView")
public String forwardMvcView(){
return "success";
}

上面就是一种请求转发

请求转发的第二种情况:不经过视图解析器

前端页面

<a href="${pageContext.request.contextPath}/forwardView">请求转发经过视图解析器</a>

后台代码(由于不经过视图解析器,所以需要自己拼接前后缀)forward:关键字后面的路径表示不再经过视图解析器

@RequestMapping("/forwardView")
public String forwardView(){
return "forward:/WEB_INF/pages/success.jsp";
}

请求转发的第三种情况:请求转发传统的方式——原生Servlet

前端页面

<a href="${pageContext.request.contextPath}/forwardCommon">请求转发经过视图解析器</a>

后台代码

@RequestMapping("/forwardCommon")
public forwardCommon(HttpServletRequest request,HttpServletResponse response){
  request.getServletDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
}