IT兄弟连 JavaWeb教程 Servlet转发
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入口,所谓相对路径,就是指相对于当前源组件的路径,不以符号"/"开头。
IT兄弟连 JavaWeb教程 Servlet转发的更多相关文章
- IT兄弟连 JavaWeb教程 Servlet API
Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建 ...
- IT兄弟连 JavaWeb教程 请求转发案例
CheckServlet类与OutputServlet类之间为请求转发关系.在web.xml文件中,为CheckServlet映射的URL为"/check",为OutputServ ...
- IT兄弟连 JavaWeb教程 Servlet表单数据
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 经典面试题
1.描述Cookie的作用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端.在Cookie生效之后及失效之前,客户每次发出页面请求的时候, ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 经典案例
案例需求:编写一个servlet,可以向session中存放一个消息,再编写一个servlet可以从session取得session中存放的这个消息. 案例实现: package com.xdl.se ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session常用方法
● public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ● public ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session技术
Servlet提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式. Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之 ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie常用方法
以下是在Servlet中操作Cookie时可使用的有用的方法列表 ● public void setDomain(String pattern) 该方法设置cookie适用的域,例如 itxdl.c ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie路径问题
操作Cookie时,需要注意路径问题: 设置操作:任何路径都可以设置Cookie,但是有时我们也是用设置进行替换Cookie和删除Cookie(maxAge=0)! 替换:只能由完全相同的路径来操作! ...
随机推荐
- java utf8字符 导出csv 文件的乱码问题。
在输出的格式为UTF-8的格式,但是打开CSV文件一直为乱码,后来参考了这里的代码,搞定了乱码问题,原文请参考:http://hbase.iteye.com/blog/1172200 private ...
- php操作xml的方法
xml源文件 <?xml version="1.0 encoding="UTF-8"?> <humans> <zhangying> & ...
- [转载]CodeIgniter配置之URL
应该有很多项目中会有这样的情况,通过 http://pc.local 可以访问,若通过 http://localhost/pc/public 则会出现一些图片.样式显示不到,超链接出错的情况,项目的移 ...
- 阿里云serverMySQL无法连接问题解决纪实
作者:fbysss QQ:溜酒酒吧酒吧吾散 blog:blog.csdn.net/fbysss 声明:本文由fbysss原创,转载请注明出处 背景: 在调试程序的时候,发现数据库訪问相关的环节出现错误 ...
- pom.xml和testng.xml
转自:http://www.cnblogs.com/penghong2014/p/4380199.html <project xmlns="http://maven.apache.or ...
- visual studio 2013 update 3正式版出来了
微软的更新速度还是蛮快的吗.新版本号出来了,大家快下载体验一下吧,详细下载地址在http://www.visualstudio.com/zh-cn/downloads/download-visual- ...
- Java核心技术之基本数据类型
这篇文章.我们讨论一些java的最主要的东西.这些东西我们一般刚刚学java的时候就学过,可是不一定真正明确. 正好,我在做一个读取内存的值,涉及到bit位的值的读取和写.那就能够讨论一个java的基 ...
- CentOS笔记-系统概述
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动. 操作系统接管 ...
- hadoop的一般端口使用
- Client should know only resource URIs and that’s all.
REST Principles and Architectural Constraints – REST API Tutorial https://restfulapi.net/rest-archit ...