关于web请求转发和重定向

其实关于java web里面的请求转发和重定向有很多博客,但是本人没有收藏,而是选择了借鉴别人的再重新写一篇,为的就是加深影响,因为好多东西你看懂了和你写出是两回事。

请求转发:

request.getRequestDispatcher().forward();

重定向:

response.sendRedirect();

例如:

请求转发:

request.getRequestDispatcher("/student_list.jsp").forward(request,response);
 

重定向:

response.sendRedirect(request.getContextPath + "/student_list.jsp")

 

请求转发的示意图:

                                      

请求转发流程:首先,浏览器向ServetA发送请求,ServetA获取浏览器的请求参数或者其他资源后,没有进行处理,而是将这些参数和资源传给了给了servletB,或者jsp,或者其他web资源。接着servletB,或者jsp,或者其他web资源,对浏览器请求的参数或者资源进行处理,处理完后,将结果返回给浏览器。

重定向示意图:

                                        

重定向流程:浏览器向服务器里面的ServletA请求,ServletA对请求没有处理,而是返回了一个状态码和url。浏览器在获取ServletA返回的rul后,根据该rul重新向服务器进行请求。服务里面的ServletB或者其他资源对浏览器请求进行处理,并将结果返回给浏览器。

重定向和转发的区别

  1. 重定向的地址栏会发生变化,转发不会。因为转发是在服务器内部发生的,浏览器根本不知道。
  2. 重定向是两次请求两次响应,转发是一次请求一次响应。
  3. 重定向路径需要添加工程名,转发路径不需要加工程名。
  4. 重定向可以跳转到任何网站,转发只能在服务器内部进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值