栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

请求转发 [JavaWeb][Servlet]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

请求转发 [JavaWeb][Servlet]

Request_请求转发 请求转发: 一种在服务器内部的资源跳转方式 (一)步骤:
  1. 通过request对象获取请求转发器对象
    • 通过request对象调用getRequestDispatcher(String path)方法就能获取到请求转化器对象
      • 这个方法的参数就是我们想要将请求转发到的目标位置的访问路径
  2. 使用RequestDisPatcher对象来进行一个转发, 通过请求转发器对象RequestDispacher类的实例调用: forward(ServletRequest request, ServletResponse response)
    • 我们可以发现这个forward()转发方法中要传入一个request对象和一个response对象, 所以我们转发的时候就只需要从开始的位置开始,将我们的service()方法或者doXxx()方法中的两个形参位置的request对象和response对象传输到我们的请求转发器的forword()方法中即可
      • 因为最开始的时候我们肯定是从某个Servlet类开始接受到请求, 那么这个Servlet类要么就是通过实现Servlet接口, 或者就是通过继承HttpServlet实现类的方式创建的, 那么也就是这个Servlet类要么就是重写的service()方法, 要么就是重写的doXxx()方法, 所以我们只需要将这个service()方法中的或者doXxx()方法中的两个参数进行一个传递即可
(二)特点:
  1. 浏览器地址栏的路径不会发生变化
    • 比如: 我们假如先访问了服务器中的AServlet, 然后将请求从AServlet中转发到了BServlet中, 这个时候即使我们已经是将请求转发到了BServlet中, 此时我们已经是Servlet中的service()方法或者是doXxx()方法在操作了, 但是这个时候浏览器中的地址栏中还是我们访问AServlet的访问路径
  2. 只能转发到当前的服务器内部资源中
    • 如果我们通过我们自己的服务器中的AServlet中向百度服务器中转发访问请求的时候就会访问不到, 会提示404, 访问不到
  3. 转发是一次请求
    • 我们可以在开发者工具的NetWork中看抓包工具,我们请求之后是只会抓到一个包的, 无论在服务器内部转发了多少次都还是一次请求, 那么也就只有一个包
请求转发图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LKsctrz4-1655913621000)(E:非凡英才JavaWeb开发Servlet图解请求转发图解.png)]

上面就是浏览器向服务器发送了一个请求, 开始的时候是先向AServlet中发送了一个请求, 由AServlet中解决了部分问题之后再将这个请求转发到BServlet中, 由BServlet来完成剩余的部分任务

  • 那么我们可不可以直接就使用一个Servlet类来解决整个请求问题 ?
    • 其实也是可以的, 但是这样并不符合我们的实际开发的情况, 我们在实际开发中都是要将功能尽量的细化, 要实现模块化编程, 才能利于后期维护, 如果将所有的实现放到一个Servlet类中, 那么维护起来会很麻烦
单词积累:

dispathcer : 分配器 , 调度员

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号