SpringMVC(七)重定向和转发

一、概念

springMVC请求方式分为重定向、转发,分别用redirect、forward关键字在controller层进行处理。

重定向是将用户从当前处理请求定向到另一个视图(例如JSP)或者请求,以前的请求中存放的请求request全部失效,并进入一个新的request作用域;

转发是将用户对当前处理的请求转发给另一个视图或者请求,以前的request中存放的请求不会失效。

转发是服务器行为,重定向是客户端行为。

1.1、转发过程

客户端浏览器发送http请求,web服务器接收此请求,调用内部的一个方法在容器内完成请求处理和转发动作,将目标资源发送给客户。这里的转发路径必须是同一个web容器下的URL,不能转向到其他的web路径上,中间传递的是自己容器的request。

在客户端浏览器地址栏上显示的任然是第一次访问的路径,也就是说客户端感觉不到服务器做了转发,转发行为浏览器只做了一次请求。

1.2、重定向过程

客户端浏览器发送http请求,web服务器接收后发送302状态码及新的location给客户端浏览器,客户端浏览器发现是302响应,则自动再发送一个新的http请求,请求URL是新的location地址,服务器据此查找资源并返回给浏览器。

在这里location可以重定向到任意url,既然是浏览器重新发出的请求,以前的request就不存在了。在客户端浏览器地址栏显示的是重定向路径,用户可以观察到地址栏地址的变化,重定向行为是客户端浏览器至少做了两次访问请求。

在springMVC中,控制器类中处理方法的return语句默认实现的转发,只不过实现的是转发到视图。

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

二、示例

@Controller
@RequestMapping("/index")
public class IndexController {

    @RequestMapping("/login")
    public String login(){
        //转发到一个请求
        return "forward:/index/isLogin";
    }

    @RequestMapping("/isLogin")
    public String isLogin(){
        //重定向到一个请求方法
        return "redirect:/index/isRegister";
    }

    @RequestMapping("/isRegister")
    public String isRegister(){
        //转发到一个视图
        return "register";
    } 
}

在springMVC中,不管是重定向还是转发,都需要复合视图解析器配置,如果直接转发到一个不需要DispatcherServlet的资源,需要使用mvc:resources配置

return "forward:/html/my.html";
<mvc:resources location="/html/" mapping="/html/**" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑谈子云亭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值