IT兄弟连 JavaWeb教程 Servlet转发
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转发相关推荐
- java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术
原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术 Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报 ...
- IT兄弟连 JavaWeb教程 Servlet线程安全问题
2019独角兽企业重金招聘Python工程师标准>>> 在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中 ...
- IT兄弟连 JavaWeb教程 使用Servlet实现在页面中显示随机数
在com.xdl.servlet包下定义RandomServlet类并HttpServlet类,在该类中生成随机数并发送给客户端.RandomServlet类详细代码如下: package com.x ...
- IT兄弟连 JavaWeb教程 监听器3
2019独角兽企业重金招聘Python工程师标准>>> 监听域对象中属性变更的监听器 域对象中属性的变更的事件监听器就是用来监听ServletContext.HttpSession. ...
- IT兄弟连 JavaWeb教程 MVC设计模式
MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它强制性地把应用程序的数据展示.数据处理和流程控制分开.MVC把应用程序分成3个核心模块:模型.视 ...
- IT兄弟连 JavaWeb教程 文件下载技术
● 列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...
- IT兄弟连 JavaWeb教程 JSON和JSON字符串
2019独角兽企业重金招聘Python工程师标准>>> JSON (JavaScript Object Notation)是JavaScript语言中的一种对象类型.JSON的好处是 ...
- IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典案例
案例需求:编写用户登陆页面的验证码模块,在用户进行登陆时,输入验证码后不需要点击提交按钮,使用AJAX异步地向服务器发送验证验证码的请求.如果验证码正确,可以点击提交按钮,如果验证码输入错误,提示用户 ...
- IT兄弟连 JavaWeb教程 JSP经典面试题
1.JSP标准提供了三种独立的向JSP添加Java代码的技术,请列举. <% %>JSP程序代码块,内部可以直接嵌入Java代码. <%! %>JSP声明区,内部可以声明变量和 ...
最新文章
- C语言:简单而不易懂的声明(二)
- 人工智能,“抛弃”真实数据集?
- Android: BaseAdapter 实现分页
- MTM:matlab实现2参数解析
- Simpy练习案例(一):基本线性流程仿真
- 【Android笔记】MediaPlayer基本用法
- 不宜使用Selenium自动化的10个测试场景
- GoldenGate 常见错误分析(二)
- 计算机系统基础第二版_2020年注册环保工程师公共基础考试题库
- BT和eMule协议的比较和分析
- _stdcall相关
- wating for network configuration unity恢复
- Jsp文件修改后不生效怎么办?
- 口令破解(web安全入门07)
- 7-3 单词首字母大写
- 监控电脑屏幕python
- 201571030337/201571030327——《小学生四则运算》结对项目报告
- 平板电脑市场持续衰退,寄望二合一平板拯救该行业
- html5毕业答辩ppt,【图】毕业论文ppt内容(毕业论文毕业答辩PPT制作和讲述要点)...
- ps基础学习:图案图章工具画布填充
热门文章
- Netty 入门示例
- Gradle sync failed: failed to find Build Tools revision 21.1.2
- 5款常见原型工具,产品特色知多少?
- iOS中判断程序是不是第一次运行(新手引导界面用)
- highcharts加载数据库数据(java版)
- 两大主流IT媒体全程解秘我的“心路历程”
- 学习OpenCV(一)从Mat讲起
- 温故一下Linux CentOS的VI/VIM命令
- iOS Sprite Kit教程之申请和下载证书
- 服务器文件数量监控,服务器监控指标有哪些?好文章一定要收藏