重定向与转发——My Way20180427

      近日在听达内培训课件,spring+mybatis项目老师在讲解重定向与转发的区别时,没太听的明白,所以重新又梳理理解了下这两者之间的区别。

一、转发是从客户端-服务器端-客户端,是同一次请求,不会执行转发后的代码,并且请求地址不会变化;

二、重定向客户端-服务器端-客户端-服务器端-客户端,是两次不同请求(request),会执行重定向之后的代码,并且请求地址发生变化;

三、转发的过程只需要一个服务器,重定向的过程可以有多个不同服务器下完成;

四、从上面的几点也可以得知转发响应的速度快于重定向;

         在Controller中的转发和重定向语句

@RequestMapping("/addAccount.do")
public String add(Account account){
                account.setStatus("1");
account.setCreatime(
new Timestamp(System.currentTimeMillis()));
//新增数据
accountDao.save(cost);
//重定向
return "redirct:findAccount.do";//这里会让客户端再次发送请求到findAccount.do代码块执行代码

}

        @RequestMapping("/findAccount.do")
public String find(AccountPage page,Model model){
                List<Account> list = accountDao.findByPage(page);

model.addAttribute("account",list);
page.setRows(accountDao.findRows(page));

model.addAttribute("accountPage",page);
                //转发
return "account/account_list";//这里spring会自动给路径加上前缀和后缀:/WEB-INF/account/account_list.jsp

}

转发过程:浏览器(地址:http://www.xxx.com:8090/NETCTOSS/account/findAccount.do),客户端向服务器发送findAccount.do请求,服务器接收请求调用find方法,将结果转发给account_list.jsp页面进行解析并返回给客户端浏览器,浏览器此时的地址保持不变。

重定向过程:浏览器(地址:http://www.xxx.com:8090/NETCTOSS/account/addAccount.do)客户端向服务器发送addAccount.do请求,服务器接收请求调用调用add方法,并向客户端发送redirct重定向响应,客户端浏览器接收重定向响应后,会自动再发送findAccount.do请求,服务器接收请求调用find方法,将结果转发给account_list.jsp页面进行解析并返回给客户端浏览器,如此类推。此时浏览器地址已变成(http://www.xxx.com:8090/NETCTOSS/account/findAccount.do)。服务器可以有多个重定向,但重定向的过程中,传输的信息可能会丢失。

纯属个人理解,如有错误还望赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值