多个Servlet之间的调用规则

多个Servlet之间的调用规则

前提条件

在浏览器发送请求时,往往需要多个Servlet协同处理,但是浏览器在发送请求时:一次请求只能调用一个Servlet,用户处理一次服务需要手动发起多个请求,这对用户来说时非常痛苦的。为了减轻用户获得服务的困难,应该保证无论本次请求涉及到多少个Servlet,用户只需要【手动】通知浏览器发起一次请求即可。
实现用户直发起一次请求的方法只有两种:
1.重定向解决方案
2.请求转发解决方案

重定向解决方案

  1. 重定向工作原理:
    用户第一次通过【手动】方式通知浏览器访问服务器中的OneServlet动态资源文件。
    -OneServlet工作完毕后,将TwoServlet的地址写入到响应头的location属性中,同时把302的状态码写入到响应包的状态行中并发送回浏览器。
    -浏览器接受到响应包之后,读取状态行的302状态码,那么此时浏览器就知道服务器返回的不是一个资源文件,而是TwoServlet资源文件的地址,浏览器根据这个资源文件的地址,【自动】向服务器发送第二次请求,访问TwoServlet去完成请求中剩余的任务。
  2. 实现命令:
//将地址写入到响应包响应头的location属性中。
response.sendRedirect("请求地址");
  1. 特征:
    请求地址
    在请求地址中可以填写当前网站内部的资源文件地址;
    也可以填写其他网站资源文件的地址。
    请求次数
    用户【手动】发送了一次请求,浏览器至少发送两次请求。只有第一次请求为用户自己手动发送,后续的请求都是浏览器自己发送。
    请求方式
    重定向请求解决方案中,是通过地址栏通知浏览器发送发送下一次请求,因此,重定向调用资源文件都是通过【GET】的方式发送请求。
  2. 缺点:重定向解决方案要在浏览器与服务器之间进行对此往返,大量时间都消耗在往返次数上,增加了用户等待服务的时间。

请求转发

  1. 请求转发解决方案原理:
    -用户第一次通过手动方式要求浏览器发送请求访问OneServlet。
    -OneServlet执行完毕后,通过当前的请求对象代替浏览器向Tomcat发送请求,申请调用TwoServlet。Tomcat在接收到这个请求之后,会自动调用TwoServlet执行剩余的任务。
  2. 实现命令:
//请求对象代替浏览器发送请求
//通过当前请求对象生成资源文件申请报告对象
RequestDispatcher report = request.getRequestDispatcher("/资源文件名")
//将报告对象发送给Tomcat
report.forward(request,reponse);
  1. 优点:
    1)无论本次请求涉及到多少个Servlet,用户只需要手动通过浏览器发送一次请求。
    2) Servlet之间调用发生在服务端计算机上,节省服务端与浏览器之间往返次数。增加处理服务速度。
  2. 请求次数
    在请求转发过程中,浏览器只发送了一次请求。
    只能向Tomcat服务器申请调用当前网站下的资源文件。
  3. 请求方式:在请求转发过程中浏览器只发送了一个Http请求协议包。参与本次请求的所有Servlet共享一个请求协议包,因此这些Servlet接收到的请求方式与浏览器发送的请求方式保持一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值