JavaWeb-web开发核心知识点-Servlet04

多个Servlet来处理同一次请求方案

一、【前提】:

1)一个Servlet只负责实现一个功能
2)浏览器在一次请求时,只能请求一个资源文件
3)如果浏览器的请求需要由多个Servlet来协同完成,需要用户多次通过【手动提交】来完成任务,这样降低服务质量

二、【方案分类】:

只需要用户手动通过浏览器发送一次请求,就可以将本次请求相关的Servlet来依次调用

  1. 重定向方案
  2. 请求转发方案

三、【重定向方案原理】:

在第一个Servlet工作完毕后,将【第二个Servlet地址】推送给用户浏览器,由用户浏览器根据这个地址来【自动的】向第二个Servlet发送请求

四、【重定向方案涉及命令】:

response.sendRedirect(第二个Servlet地址);将一个地址写入到【响应头】中location
浏览器接收到响应包之后,自动根据location地址发送第二次请求,这样好处是避免用户手动发送请求

五、【重定向方案特征】:

  1. 【发生位置】:在客户端的浏览器上
  2. 【浏览器发送的请求次数】:多次
  3. 【地址栏内容是否会发生变化】:会发生变化,内容是浏览器第二次要访问的资源地址
  4. 【重定向时,浏览器采用的请求方式】:由于此时通过地址栏命令浏览器发送请求,所以浏览器采用请求方式一定是GET方式
  5. 【重定向时,访问的资源文件范围】:可以访问的资源文件可以是同一网站资源,也可以是其他网站资源

六、【重定向方案适用场景】:

  1. 添加功能Servlet 调用 查询功能Servlet
  2. 删除功能Servlet 调用 查询功能Servlet
  3. 更新功能Servlet 调用 查询功能Servlet

七、【请求转发原理】:

在第一个Servlet工作完毕后,代替当前浏览器向Tomcat申请调用第二个Servlet
Tomcat在接受到申请之后,调用第二个Servlet来完成本次请求中剩余任务

八、【请求转发涉及命令】:

OneServlet
//1. 创建一个资源申请报告对象
RequestDispatcher report = request.getRequestDispatcher(“第二个Servlet地址”);
//2. 将申请报告推送给Tomcat,同时将oneServlet拥有的【request和response】一并交给Tomcat
report.forward(request,response)
//3. Tomcat在接收到报告后,就会调用第二个Servlet完成剩余任务

九、【请求转发时为什么将第一个Servlet中request和response交给Tomcat】:

  1. Tomcat在接受到请求后,需要调用第二个Servlet。
  2. Tomcat此时需要为第二个Servlet提供运行时需要【request】和【response】
  3. 但是,本次请求是由第一个Servlet来发送的,没有对应的【请求协议包】因此导致Tomcat在接收到请求后,不会创建【request】和【response】
  4. 为了解决这个问题,需要将第一个Servlet使用【request】和【response】通过Tomcat交给第二个Servlet来使用。

十、【请求转发特征】:

  1. 【发生位置】:发生在服务端
  2. 【浏览器发送请求次数】:浏览器只向服务端发送了一次请求
  3. 【地址栏内容是否会发送变化】:由于请求转发发生在服务端,因此浏览器地址内容保持在一次请求内容
  4. 【调用资源文件范围】:只能访问同一个访问内部的资源文件
  5. 【通过请求转发调用的Servlet接收的请求方式】:与浏览器第一次发送请求时,使用的请求方式保持一致;参与同一次请求转发的所有Servlet接收的请求方式是一样的
  6. 【参与同一次请求转发的所有Servlet之间如何进行数据共享】
    1)可以使用全局作用域对象,提供共享数据
    2)可以使用会话作用域对象,提供共享数据
    3)可以使用请求作用域对象,提供共享数据

十一、【请求转发不适合场景】:

查询Servlet调用JSP时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值