请求转发(重要)!!

简介: 请求转发(重要)!!

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


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


1.工作原理

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


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


来看我们的示例图:


2.png


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方法里面。


相关文章
|
6月前
|
存储
Ruquest请求转发
Ruquest请求转发
55 0
|
6月前
|
前端开发
请求转发和重定向的区别
请求转发和重定向的区别
86 0
|
6月前
|
存储 数据处理
Request请求转发与Respones请求重定向有什么区别?
Request请求转发与Respones请求重定向有什么区别?
|
存储 应用服务中间件 数据库
Servlet请求转发和重定向
Servlet请求转发和重定向
170 0
重定向和请求转发的区别
重定向和请求转发的区别
95 0
|
Java 数据库
Servlet的请求转发和重定向的区别
Servlet的请求转发和重定向的区别
134 0
Servlet的请求转发和重定向的区别
|
XML 数据格式
Javaweb 请求转发和请求重定向
1.请求转发和请求重定向区别 请求转发和请求重定向主要区别,包含以下 5 点: 定义不同 请求方不同 数据共享不同 最终 URL 地址不同 代码实现不同 定义不同:🙌
129 0
Javaweb 请求转发和请求重定向
SpringMVC 请求转发和重定向
SpringMVC 实现请求转发和重定向也很方便: 实现请求转发: 🙌
71 0
SpringMVC 请求转发和重定向
|
前端开发
请求转发与请求重定向
请求转发与请求重定向
268 0
请求转发与请求重定向
|
前端开发 Java
重定向与请求转发
介绍JavaWeb中的实现页面跳转的同卵双胞胎兄弟—重定向与请求转发以及代码实现流程
重定向与请求转发