2019独角兽企业重金招聘Python工程师标准>>>

Servlet对象由Servlet容器创建,并且Servlet对象的service()方法也由容器调用,一个Servlet对象可否直接调用另一个Servlet对象的service()方法呢?答案是否定的,因为一个Servlet对象无法获得另一个Servlet对象的引用。

Web应用在响应客户端的一个请求时,有可能响应过程很复杂,需要多个Web项目组件共同协作,才能生成响应结果。尽管一个Servlet对象无法直接调用另一个Servlet对象的service()方法,但Servlet规范为Web组件之间的协作提供了两种途径。

●  请求转发:Servlet(源组件)先对客户请求做一些预处理,然后把请求转发给其他Web组件(目标组件)来完成包含生成响应结果在内的后续操作。

●  包含:Servlet(源组件)把其他Web组件(目标组件)生成的响应结果包含到自身的响应结果中。

请求转发与包含具有以下共同特点:

源组件和目标组件处理的都是同一个客户请求,源组件和目标组件共享一个ServletRequest对象和ServletResponse对象。

目标组件都可以为Servlet、JSP或HTML文档。

都依赖javax.servlet.RequestDispatcher接口。

javax.servlet.RequsetDispatcher接口表示请求分发器,它有两个方法。

●  forward()方法:把请求转发给目标组件,该方法的声明如下:

public void forward(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

●  include()方法:包含目标组件的响应结果,该方法的声明如下:

public void include(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException

当Servlet源组件调用RequestDispatcher和forward()或include()方法时,都要把当前的ServletRequest对象和ServletResponse对象作为参数传给forward()或include()方法。这使得源组件和目标组件共享同一个ServletRequest对象和ServletResponse对象。

Servlet可通过两种方式得到RequestDispatcher对象:

●  调用ServletContext的getRequestDispatcher(String path)方法,path参数指定目标组件的路径。

●  调用HttpServletRequest的getRequestDispathcer(String path)方法,path参数指定目标组件的路径。

以上两种方式的区别在于,前者的path参数必须为绝对路径,而后者的path参数既可以为绝对路径,也可以为相对路径。所谓绝对路径就是以"/"开头的路径,"/"表示当前Web应用的URL入口,所谓相对路径,就是指相对于当前源组件的路径,不以符号"/"开头。

转载于:https://my.oschina.net/u/4125915/blog/3047831

IT兄弟连 JavaWeb教程 Servlet转发相关推荐

  1. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

    原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术 Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报 ...

  2. IT兄弟连 JavaWeb教程 Servlet线程安全问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中 ...

  3. IT兄弟连 JavaWeb教程 使用Servlet实现在页面中显示随机数

    在com.xdl.servlet包下定义RandomServlet类并HttpServlet类,在该类中生成随机数并发送给客户端.RandomServlet类详细代码如下: package com.x ...

  4. IT兄弟连 JavaWeb教程 监听器3

    2019独角兽企业重金招聘Python工程师标准>>> 监听域对象中属性变更的监听器 域对象中属性的变更的事件监听器就是用来监听ServletContext.HttpSession. ...

  5. IT兄弟连 JavaWeb教程 MVC设计模式

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它强制性地把应用程序的数据展示.数据处理和流程控制分开.MVC把应用程序分成3个核心模块:模型.视 ...

  6. IT兄弟连 JavaWeb教程 文件下载技术

    ●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...

  7. IT兄弟连 JavaWeb教程 JSON和JSON字符串

    2019独角兽企业重金招聘Python工程师标准>>> JSON (JavaScript Object Notation)是JavaScript语言中的一种对象类型.JSON的好处是 ...

  8. IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例

    案例需求:编写用户登陆页面的验证码模块,在用户进行登陆时,输入验证码后不需要点击提交按钮,使用AJAX异步地向服务器发送验证验证码的请求.如果验证码正确,可以点击提交按钮,如果验证码输入错误,提示用户 ...

  9. IT兄弟连 JavaWeb教程 JSP经典面试题

    1.JSP标准提供了三种独立的向JSP添加Java代码的技术,请列举. <% %>JSP程序代码块,内部可以直接嵌入Java代码. <%! %>JSP声明区,内部可以声明变量和 ...

最新文章

  1. C语言:简单而不易懂的声明(二)
  2. 人工智能,“抛弃”真实数据集?
  3. Android: BaseAdapter 实现分页
  4. MTM:matlab实现2参数解析
  5. Simpy练习案例(一):基本线性流程仿真
  6. 【Android笔记】MediaPlayer基本用法
  7. 不宜使用Selenium自动化的10个测试场景
  8. GoldenGate 常见错误分析(二)
  9. 计算机系统基础第二版_2020年注册环保工程师公共基础考试题库
  10. BT和eMule协议的比较和分析
  11. _stdcall相关
  12. wating for network configuration unity恢复
  13. Jsp文件修改后不生效怎么办?
  14. 口令破解(web安全入门07)
  15. 7-3 单词首字母大写
  16. 监控电脑屏幕python
  17. 201571030337/201571030327——《小学生四则运算》结对项目报告
  18. 平板电脑市场持续衰退,寄望二合一平板拯救该行业
  19. html5毕业答辩ppt,【图】毕业论文ppt内容(毕业论文毕业答辩PPT制作和讲述要点)...
  20. ps基础学习:图案图章工具画布填充

热门文章

  1. Netty 入门示例
  2. Gradle sync failed: failed to find Build Tools revision 21.1.2
  3. 5款常见原型工具,产品特色知多少?
  4. iOS中判断程序是不是第一次运行(新手引导界面用)
  5. highcharts加载数据库数据(java版)
  6. 两大主流IT媒体全程解秘我的“心路历程”
  7. 学习OpenCV(一)从Mat讲起
  8. 温故一下Linux CentOS的VI/VIM命令
  9. iOS Sprite Kit教程之申请和下载证书
  10. 服务器文件数量监控,服务器监控指标有哪些?好文章一定要收藏