window.location.href是转发还是重定向_修炼SpringMVC-注解开发-请求转发与重定向(三)...

上一篇:《修炼SpringMVC-注解开发-请求转发与重定向(二)》

如果文中有纰漏,请多多指正!!!

返回void时的请求转发和重定向

一、返回void时的请求转发

当处理器方法返回void时,若要实现请求转发,需要使用HttpServletRequest的请求转发方法,无论是下一级资源是页面还是Controller,用法相同。这种方法与原始的Servlet开发十分相似。

在传递的过程中,如果有数据要向下一级资源传递,则需要将数据放入到request或session中。不能在使用Model、RedirectAttributes中,这是因为由Model、RedirectAttributes传递的数据都是拼接到处理器方法返回值中的,作为请求的一部分出现向下传递。这里没有返回值,所以使用Model、RedirectAttributes其中的数据无法向下传递。

二、返回void时的重定向

当处理器方法返回void时,若要实现重定向,需要使用HttpServletResponse的重定向方法,无论是下一级资源是页面还是Controller,用法相同。这种方法与原始的Servlet开发十分相似。

在传递的过程中,如果有数据要向下一级资源传递,则需要将数据放入到session中。与请求转发类似不能在使用Model、RedirectAttributes携带数据。

三、返回void时的请求转发和重定向简单案例

@Controller@RequestMapping("/ResourceVoid")public class ResourceVoidController {    /**     * 请求转发     * 无论是请求转发到页面还是其他Controller     * 均使用request.getRequestDispatcher("url").forward(request, response);     * 即可.     */    @RequestMapping(value="/forward.do")    public void forward(HttpServletRequest request,            HttpServletResponse response,String param) throws Exception {        request.setAttribute("show", param);        //请求转发        request.getRequestDispatcher("/jsp/display.jsp").forward(request, response);    }    /**     * 重定向     * 无论是重定向到页面还是其他Controller     * 均使用response.sendRedirect("url");     * 即可.     */    @RequestMapping(value="/redirect.do")    public void forward(HttpServletRequest request,HttpServletResponse response,            HttpSession session,String param) throws Exception {        //放到session中        session.setAttribute("show", param);        //请求转发        response.sendRedirect(request.getContextPath()+"/jsp/display.jsp");    }}

地址栏输入测试地址:

请求转发:http://localhost:8080/SpringMVCPrimary/ResourceVoid/forward.do?param=32324重定向:http://localhost:8080/SpringMVCPrimary/ResourceVoid/redirect.do?param=8888
5cf3addd9729273af6762ec4ed86183a.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值