请求转发(重要)!!

讲完了重定向,不得不说到一个概念就是我们的请求转发:在面试中也经常会将重定向与请求转发进行对比考察:

下面还是先来介绍下我们的请求转发:

1.工作原理

此处我们还是以用户OneServlet和TwoServlet为例子:只不过我们访问TwoServet的方式由原来的重定向变为了请求抓发,下面来看访问的过程与重定向有什么不同。

用户第一次通过手动方式要求浏览器访问OneServlet。OneServlet工作完毕后,通过当前的请求对象代替浏览器向http服务器Tomcat发送请求,申请调用TwoServlet。Tomcat在接收到这个请求之后,自动调用TwoServlet来完成剩余任务

来看我们的示例图:

2.实现方式

请求对象代替浏览器向Tomcat发送请求(注意与重定向的不同之处)

具体实现: 

(1)通过当前请求对象request调用getRequestDispatcher方法生成资源文件申请报告对象

  RequestDispatcher  report = request.getRequestDispatcher("/资源文件名");

1:注意资源文件名一定要以"/"为开头。

2:此处的资源文件名只能是当前发布的项目的内部资源文件名,不能是其他外部资源文件名,例如可以放入TwoServlet的请求别名/two,注意此处不需要加入我们发布时的项目名,也就是说在重定向中的写法为/myweb/two,而在我们的请求转发中的写法为/two.

3:此处的资源文件名不能像之前重定向那样放入我们的百度链接,也就是此处不能放入外部的资源文件,否则会报404错误。

(2)将报告对象发送给Tomcat

 report.forward(当前请求对象,当前响应对象)

    一般可以直接整合这样写:request.getRequestDispatcher("/资源文件名").forward(当前请求对象,当前响应对象)

3.请求转发的优点

(1)无论本次请求涉及到多少个Servlet,用户只需要手动通过浏览器发送一次请求

(2) Servlet之间调用发生在服务端计算机上,节省服务端与浏览器之间往返次数,增加处理服务速度

4.请求转发的特征

1)请求次数

    在请求转发过程中,浏览器只发送一次请求。

2)请求地址

只能向Tomcat服务器申请调用当前网站下资源文件地址,request.getRequestDispathcer("/资源文件名") 

注意括号中不要写网站名,只能写我们发布的项目的内部资源文件。

3)请求方法(method:get和post)

在请求转发过程中,浏览器只发送一个了个Http请求协议包。
所以参与本次请求的所有Servlet共享同一个请求协议包,因此这些Servlet接收的请求方法与最开始浏览器发送的请求方法保持一致。  
讲请求方法的目的举个比方来说的话就是看将来后台servlet实现类的代码是写在doGeT方法里面还是写在doPost方法里面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值