首先明白请求转发是一次请求,地址栏不会发生变化,区别于重定向。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);
}