Notepad2-mod_4.2.25.998_PortableSoft.7z
Notepad2是一个外观类似系统记事本的文本编辑工具,但比记事本有了很大的增强.这是一个很不错的记事本.而 Notepad2-mod.Notepad2是一个外观类似系统记事本的文本编辑工具,但比记事本有了很大的增强.这是一个很不错的记事本.而 Notepad2-mod.
MyEclipse2017CI7破解工具.zip
将patch文件夹中内容覆盖到 <你的MyEclipse安装目录>\plugins 文件夹中
打开tools文件夹中的cracker2017.jar文件
输入你的用户名,是的,随便输,怎么高兴怎么来
下拉框选择BLUE
点击SystemId按钮,你会发现点击第一次没效果,没关系,进行第4步
再点一次SystemId按钮,这时你会发现有一串key自动填进来了
发现SystemId框有一串字符之后,点击Active按钮激活
最后也是最关键的一步,点击Tools–>SaveProperities,会自动保存生成的myeclipse.properties文件
jrebel 7.0.2 crack 破解版
jrebel破解版本
jrebel.properties
####enable profile plugin begin#####
rebel.profile_plugin=true
rebel.profile_classes=com.jrebel.WikiPage,com.jrebel.AddrPage
rebel.profile_elapseMillSecond=100
rebel.profile_logfile=D:/java/jrebel/jrebel-profile.log
####enable profile plugin end #####
java并发编程的艺术
Java并发编程的艺术 介绍、书评、论坛及推荐... 并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,对并发编程有非常深入的研究,《Java并发编程的艺术
gvim补全插件snipmate使用
gvim补全插件snipmate使用
一.此版本已经修正了在php文件中书写html代码时的缩进问题,希望能和大家一起努力!
你把这个文件夹和vim配置文件直接拷贝覆盖到你的gvim安装目录下,你简单的看一下你的gvim安装目录就知道了.
比如:C:\Program Files\Vim
二.如果你想让gvim编辑器支持多标签
1._vimrc中加以下:
set showtabline=2
//开启标签栏
2.修改注册表-regedit
HKEY_CLASSES_ROOT
*
shell
新建 vim_add_edit
新建 command 值为:"C:\Program Files\Vim\vim73\gvim.exe" -p --remote-tab-silent "%1"
作者:李强强
时间:2013.4.11
Visual Assist X 10.9.2068完美破解版
Visual Assist whole tomato visual studio Visual Assist X 10.9.2068完美破解版
My97DatePicker
My97DatePicker,时间控件.JS时间控件,兼容多版本浏览器。
jquery源码 详细中文注释
Jquery v1.2.6的JS框架集,这个是在官方基础上汉化了代码注释,更得使用和学习,感谢高人的奉献。
软件工程专业应聘资料
软件工程专业应聘资料
本电子文档所有资料来源于网络,
仅供学习参考,
不得用于商业用途,
转载请注明资料出处 !
ORACLE 九羊神功.chm
本帮助的示例主要是针对SCOTT/tiger下的表
由于本人初学Oracle还有很多不明白的地方,
可能出现错误和不全的地方,希望各位大侠给予指出!
联系方式:e_mail flyer_uo@163.com
QQ 6744428
本人在这给予衷心的感谢!
JavaScript源代码集.chm
如何在首页显示当前的让你的主页能够自动识别来访者使用的浏览器;
一种一条一条显示信息的跑马灯;
自动滚屏并不一定需要Dhtml,到这里看看喔!
在页面上提供向前,向后翻页的按钮。
告诉来访者在本页面停留的时间,作用好坏你判断吧!
请来客登记姓名,统计来访次数。
最常见的横向移动显示信息的跑马灯;
自动显示主页最后更新日期,虽然简单,可是实用。
浏览器状态栏里的跑马灯
根据访问时间的不同,显示不同的问候语
特别推荐综合搜索引擎器(含13种搜索引擎)
在主页里加一个目录导航器,是个好主意。
最新推出的时间按钮,按一下可以看见...
想在首页加一个阅读式的公告栏吗?
XMLHTTP+手册.CHM
XMLHttpRequest可以提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在后台向客户端发送数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。尽管名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它可以接收任何形式的文本文档。XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。
屏幕捕捉(FastStone capture for windows ).exe
屏幕捕捉.exe
FastStone capture for windows http://www.faststone.org
sql+语句大全.zip
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。 练掌握SQL是数据库用户的宝贵财 富。在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成
NekoHTML学习笔记.rar
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。NekoHTML的开发使用了Xerces Native Interface (XNI),后者是Xerces2的实现基础。
java-servlet-api.doc
Java Servlet API说明文档
绪言
这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。
谁需要读这份文档
这份文档描述了JavaServletAPI的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。
JavaServletAPI的组成
JavaServletAPI由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得JavaServletAPI能够适应将来的其他请求-响应的协议。
这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。
有关规范
你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到ServletAPI的发展和执行。你可以从http://info.internet.isi.edu/7c/in-notes/rfc/.cache找到下面提到的所有这些RFC规范。
RFC1738统一资源定位器(URL)
RFC1808相关统一资源定位器
RFC1945超文本传输协议--HTTP/1.0
RFC2045多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式
RFC2046多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型
RFC2047多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本
RFC2048多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分:注册步骤
RFC2049多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:一致性标准和例子
RFC2068超文本传输协议--HTTP/1.1
RFC2069一个扩展HTTP:摘要访问鉴定
RFC2109HTTP状态管理机制
RFC2145HTTP版本号的使用和解释
RFC2324超文本CoffeePot控制协议(HTCPCP/1.0)
万维网协会(http://www.w3.org)管理着这些协议的规范和执行。
有关JavaServlets
JavaTMservlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。
Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
在功能上,Servlet与CGI、NSAPI有点类似,但是,与他们不同的是:Servlet具有平台无关性。
JavaServlet概论
Servlet与其他普通的server扩展机制有以下进步:
因为它采用了不同的进程处理模式,所以它比CGI更快。
它使用了许多Web服务器都支持的标准的API。
它继承了Java的所有优势,包括易升级以及平台无关性。
它可以调用Java所提供的大量的API的功能模块。
这份文档说明了JavaServletAPI的类和接口的方法。有关更多的信息,请参看下面的API说明。
Servlet的生命周期
一个Javaservlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
所有的JavaServlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。Servlet引擎是Web服务器按照JavaServletAPI定制的扩展。Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。
Servlet的解析和载入
Servlet引擎解析并载入一个Servlet,这个过程可以发生在引擎启动时,需要一个Servlet去响应请求时,以及在此之间的任何时候。
Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。
Servlet的初始化
Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。
Servlet处理请求\r
Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。
当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。
Servlet也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。
ServletResponse接口允许Servlet建立响应头和状态代码。通过执行这个接口,Servlet有权使用ServletOutputStream类来向客户端返回数据。
多线程和映射\r
在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。
Servlet依照Servlet引擎的映射来响应客户端的请求。一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL,例如:HelloServletwith/hello/index.html。
然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。
Servlet的卸载
Servlet引擎并不必需保证一个Servlet在任何时候或在服务开启的任何时候都被载入。Servlet引擎可以自由的在任何时候使用或清除一个Servlet。因此,我们不能依赖一个类或实例来存储重要的信息。
当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。
在卸载一个Servlet之前,Servlet引擎必须等待所有的service()方法完成或超时结束(Servlet引擎会对超时作出定义)。当一个Servlet被卸载时,引擎将不能给Servlet发送任何请求。引擎必须释放Servlet并完成无用存储单元的收集
Servlet映射技术\r
作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:
映射一个Servlet到一个URL
例如,你可以指定一个特殊的Servlet它仅被来自/feedback/index.html的请求调用。
映射一个Servlet到以一个指定的目录名开始的所有URL
例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、/catalog/garden和/catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo或/catalog.html的请求没被映射。
映射一个Servlet到所有以一个特定的字段结尾的所有URL
例如,你可以映射一个来自于所有以in.thtml结尾的请求到一个特定的Servlet。
映射一个Servlet到一个特殊的URL/servlet/servlet_name。
例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。
通过类名调用Servlet
例如,如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求,Servlet引擎会载入这个com.foo.servlet.MailServlet类,建立实例,并通过这个Servlet来处理请求。
Servlet环境
ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
如果Servlet引擎支持虚拟主机,每个虚拟主机有一个Servlet环境。一个Servlet环境不能在虚拟主机之间共享。
Servlet引擎能够允许一个Servlet环境有它自己的活动范围。
例如,一个Servlet环境是属于bank应用的,它将被映射到/bank目录下。在这种情况下,一个对getContext方法的调用会返回/bank的Servlet环境。
HTTP会话
HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。
JavaServletAPI提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。
建立Session
因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。
在下面的情况下,Session会被认为是新的Session。
客户端的Session在此之前还不知道
客户端选择不加入Session,例如,如果客户端拒绝接收来自服务器的cookie
作为一个Servlet的开发者,你必须决定你的Web应用是否处理客户机不加入或不能加入Session。服务器会在Web服务器或Servlet规定的时间内维持一个Session对象。当Session终止时,服务器会释放Session对象以及所有绑定在Session上的对象。
绑定对象到Session中
如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的Servlet调用。
有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。
绪言
这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。
谁需要读这份文档
这份文档描述了JavaServletAPI的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。
JavaServletAPI的组成
JavaServletAPI由两个软件包组成:一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。这两个软件包的同时存在使得JavaServletAPI能够适应将来的其他请求-响应的协议。
这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。
有关规范
你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到ServletAPI的发展和执行。你可以从http://info.internet.isi.edu/7c/in-notes/rfc/.cache找到下面提到的所有这些RFC规范。
RFC1738统一资源定位器(URL)
RFC1808相关统一资源定位器
RFC1945超文本传输协议--HTTP/1.0
RFC2045多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:Internet信息体格式
RFC2046多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:媒体类型
RFC2047多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:信息标题扩展用于非ASCII文本
RFC2048多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分:注册步骤
RFC2049多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:一致性标准和例子
RFC2068超文本传输协议--HTTP/1.1
RFC2069一个扩展HTTP:摘要访问鉴定
RFC2109HTTP状态管理机制
RFC2145HTTP版本号的使用和解释
RFC2324超文本CoffeePot控制协议(HTCPCP/1.0)
万维网协会(http://www.w3.org)管理着这些协议的规范和执行。
有关JavaServlets
JavaTMservlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。
Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
在功能上,Servlet与CGI、NSAPI有点类似,但是,与他们不同的是:Servlet具有平台无关性。
JavaServlet概论
Servlet与其他普通的server扩展机制有以下进步:
因为它采用了不同的进程处理模式,所以它比CGI更快。
它使用了许多Web服务器都支持的标准的API。
它继承了Java的所有优势,包括易升级以及平台无关性。
它可以调用Java所提供的大量的API的功能模块。
这份文档说明了JavaServletAPI的类和接口的方法。有关更多的信息,请参看下面的API说明。
Servlet的生命周期
一个Javaservlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
所有的JavaServlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。Servlet引擎是Web服务器按照JavaServletAPI定制的扩展。Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。
Servlet的解析和载入\r
Servlet引擎解析并载入一个Servlet,这个过程可以发生在引擎启动时,需要一个Servlet去响应请求时,以及在此之间的任何时候。
Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。
Servlet的初始化
Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。
Servlet处理请求\r
Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。
当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。
Servlet也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。
ServletResponse接口允许Servlet建立响应头和状态代码。通过执行这个接口,Servlet有权使用ServletOutputStream类来向客户端返回数据。
多线程和映射\r
在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。
Servlet依照Servlet引擎的映射来响应客户端的请求。一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL,例如:HelloServletwith/hello/index.html。
然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。
Servlet的卸载
Servlet引擎并不必需保证一个Servlet在任何时候或在服务开启的任何时候都被载入。Servlet引擎可以自由的在任何时候使用或清除一个Servlet。因此,我们不能依赖一个类或实例来存储重要的信息。
当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。
在卸载一个Servlet之前,Servlet引擎必须等待所有的service()方法完成或超时结束(Servlet引擎会对超时作出定义)。当一个Servlet被卸载时,引擎将不能给Servlet发送任何请求。引擎必须释放Servlet并完成无用存储单元的收集
Servlet映射技术\r
作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:
映射一个Servlet到一个URL
例如,你可以指定一个特殊的Servlet它仅被来自/feedback/index.html的请求调用。
映射一个Servlet到以一个指定的目录名开始的所有URL
例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、/catalog/garden和/catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo或/catalog.html的请求没被映射。
映射一个Servlet到所有以一个特定的字段结尾的所有URL
例如,你可以映射一个来自于所有以in.thtml结尾的请求到一个特定的Servlet。
映射一个Servlet到一个特殊的URL/servlet/servlet_name。
例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。
通过类名调用Servlet
例如,如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求,Servlet引擎会载入这个com.foo.servlet.MailServlet类,建立实例,并通过这个Servlet来处理请求。
Servlet环境
ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
如果Servlet引擎支持虚拟主机,每个虚拟主机有一个Servlet环境。一个Servlet环境不能在虚拟主机之间共享。
Servlet引擎能够允许一个Servlet环境有它自己的活动范围。
例如,一个Servlet环境是属于bank应用的,它将被映射到/bank目录下。在这种情况下,一个对getContext方法的调用会返回/bank的Servlet环境。
HTTP会话
HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。
JavaServletAPI提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。
建立Session
因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。
在下面的情况下,Session会被认为是新的Session。
客户端的Session在此之前还不知道
客户端选择不加入Session,例如,如果客户端拒绝接收来自服务器的cookie
作为一个Servlet的开发者,你必须决定你的Web应用是否处理客户机不加入或不能加入Session。服务器会在Web服务器或Servlet规定的时间内维持一个Session对象。当Session终止时,服务器会释放Session对象以及所有绑定在Session上的对象。
绑定对象到Session中
如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的Servlet调用。
有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。
软件包:javax.servlet.http
所包含的接口:HttpServletRequest;HttpServletResponse;HttpSession;HttpSessionBindingListener;HttpSessionContext。
所包含的类:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。
一、HttpServletRequest接口
定义\
publicinterfaceHttpServletRequestextendsServletRequest;
用来处理一个对Servlet的HTTP格式的请求信息。
方法
1、getAuthType
publicStringgetAuthType();
返回这个请求的身份验证模式。
2、getCookies
publicCookie[]getCookies();
返回一个数组,该数组包含这个请求中当前的所有cookie。如果这个请求中没有cookie,返回一个空数组。
3、getDateHeader
publiclonggetDateHeader(Stringname);
返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
4、getHeader
publicStringgetHeader(Stringname);
返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
如果这个请求头域不存在,这个方法返回-1。
5、getHeaderNames
publicEnumerationgetHeaderNames();
该方法返回一个String对象的列表,该列表反映请求的所有头域名。
有的引擎可能不允许通过这种方法访问头域,在这种情况下,这个方法返回一个空的列表。
6、getIntHeader
publicintgetIntHeader(Stringname);
返回指定的请求头域的值,这个值被转换成一个整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
7、getMethod
publicStringgetMethod();
返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
8、getPathInfo
publicStringgetPathInfo();
这个方法返回在这个请求的URL的Servlet路径之后的请求URL的额外的路径信息。如果这个请求URL包括一个查询字符串,在返回值内将不包括这个查询字符串。这个路径在返回之前必须经过URL解码。如果在这个请求的URL的Servlet路径之后没有路径信息。这个方法返回空值。
9、getPathTranslated
publicStringgetPathTranslated();
这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
10、getQueryString
publicStringgetQueryString();
返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“?”引出。如果没有查询字符串,这个方法返回空值。
11、getRemoteUser
publicStringgetRemoteUser
返回作了请求的用户名,这个信息用来作HTTP用户论证。
如果在请求中没有用户名信息,这个方法返回空值。
12、getRequestedSessionId
publicStringgetRequestedSessionId();
返回这个请求相应的sessionid。如果由于某种原因客户端提供的sessionid是无效的,这个sessionid将与在当前session中的sessionid不同,与此同时,将建立一个新的session。
如果这个请求没与一个session关联,这个方法返回空值。
13、getRequestURI
publicStringgetRequestURI();
从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过/catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径和路径信息。
如果这个URL路径中的的一部分经过了URL编码,这个方法的返回值在返回之前必须经过解码。
14、getServletPath
publicStringgetServletPath();
这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。
15、getSession
publicHttpSessiongetSession();
publicHttpSessiongetSession(booleancreate);
返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。
为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
如果带入的参数为假,而且没有session与这个请求关联。这个方法会返回空值。
16、isRequestedSessionIdValid
publicbooleanisRequestedSessionIdValid();
这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
17、isRequestedSessionIdFromCookie
publicbooleanisRequestedSessionIdFromCookie();
如果这个请求的sessionid是通过客户端的一个cookie提供的,该方法返回真,否则返回假。
18、isRequestedSessionIdFromURL
publicbooleanisRequestedSessionIdFromURL();
如果这个请求的sessionid是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
以下方法将被取消\\r
19、isRequestedSessionIdFromUrl
publicbooleanisRequestedSessionIdFromUrl();
该方法被isRequestedSessionIdFromURL代替。
二、HttpServletResponse接口
定义\\r
publicinterfaceHttpServletResponseextendsServletResponse
描述一个返回到客户端的HTTP回应。这个接口允许Servlet程序员利用HTTP协议规定的头信息。
成员变量
publicstaticfinalintSC_CONTINUE=100;
publicstaticfinalintSC_SWITCHING_PROTOCOLS=101;
publicstaticfinalintSC_OK=200;
publicstaticfinalintSC_CREATED=201;
publicstaticfinalintSC_ACCEPTED=202;
publicstaticfinalintSC_NON_AUTHORITATIVE_INFORMATION=203;
publicstaticfinalintSC_NO_CONTENT=204;
publicstaticfinalintSC_RESET_CONTENT=205;
publicstaticfinalintSC_PARTIAL_CONTENT=206;
publicstaticfinalintSC_MULTIPLE_CHOICES=300;
publicstaticfinalintSC_MOVED_PERMANENTLY=301;
publicstaticfinalintSC_MOVED_TEMPORARILY=302;
publicstaticfinalintSC_SEE_OTHER=303;
publicstaticfinalintSC_NOT_MODIFIED=304;
publicstaticfinalintSC_USE_PROXY=305;
publicstaticfinalintSC_BAD_REQUEST=400;
publicstaticfinalintSC_UNAUTHORIZED=401;
publicstaticfinalintSC_PAYMENT_REQUIRED=402;
publicstaticfinalintSC_FORBIDDEN=403;
publicstaticfinalintSC_NOT_FOUND=404;
publicstaticfinalintSC_METHOD_NOT_ALLOWED=405;
publicstaticfinalintSC_NOT_ACCEPTABLE=406;
publicstaticfinalintSC_PROXY_AUTHENTICATION_REQUIRED=407;
publicstaticfinalintSC_REQUEST_TIMEOUT=408;
publicstaticfinalintSC_CONFLICT=409;
publicstaticfinalintSC_GONE=410;
publicstaticfinalintSC_LENGTH_REQUIRED=411;
publicstaticfinalintSC_PRECONDITION_FAILED=412;
publicstaticfinalintSC_REQUEST_ENTITY_TOO_LARGE=413;
publicstaticfinalintSC_REQUEST_URI_TOO_LONG=414;
publicstaticfinalintSC_UNSUPPORTED_MEDIA_TYPE=415;
publicstaticfinalintSC_INTERNAL_SERVER_ERROR=500;
publicstaticfinalintSC_NOT_IMPLEMENTED=501;
publicstaticfinalintSC_BAD_GATEWAY=502;
publicstaticfinalintSC_SERVICE_UNAVAILABLE=503;
publicstaticfinalintSC_GATEWAY_TIMEOUT=504;
publicstaticfinalintSC_HTTP_VERSION_NOT_SUPPORTED=505;
以上HTTP产状态码是由HTTP/1.1定义的。
方法
1、addCookie
publicvoidaddCookie(Cookiecookie);
在响应中增加一个指定的cookie。可多次调用该方法以定义多个cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。
2、containsHeader
publicbooleancontainsHeader(Stringname);
检查是否设置了指定的响应头。
3、encodeRedirectURL
publicStringencodeRedirectURL(Stringurl);
对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。之所以提供这个附加的编码方法,是因为在redirect的情况下,决定是否对URL进行编码的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛出一个IllegalArgumentException。
所有提供给sendRedirect方法的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。
4、encodeURL
publicStringencodeURL(Stringurl);
对包含sessionID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手段来维持。
所有提供给Servlet的URL都应通过这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。
5、sendError
publicvoidsendError(intstatusCode)throwsIOException;
publicvoidsendError(intstatusCode,Stringmessage)throws
IOException;
用给定的状态码发给客户端一个错误响应。如果提供了一个message参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。
调用这个方法后,响应立即被提交。在调用这个方法后,Servlet不会再有更多的输出。
6、sendRedirect
publicvoidsendRedirect(Stringlocation)throwsIOException;
使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY)。给定的路径必须是绝对URL。相对URL将不能被接收,会抛出一个IllegalArgumentException。
这个方法必须在响应被提交之前调用。调用这个方法后,响应立即被提交。在调用这个方法后,Servlet不会再有更多的输出。
7、setDateHeader
publicvoidsetDateHeader(Stringname,longdate);
用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。
8、setHeader
publicvoidsetHeader(Stringname,Stringvalue);
用一个给定的名称和域设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
9、setIntHeader
publicvoidsetIntHeader(Stringname,intvalue);
用一个给定的名称和整形值设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
10、setStatus
publicvoidsetStatus(intstatusCode);
这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。
以下的几个方法将被取消\
11、encodeRedirectUrl
publicStringencodeRedirectUrl(Stringurl);
该方法被encodeRedirectURL取代。
12、encodeUrl
publicStringencodeUrl(Stringurl);
该方法被encodeURL取代。
13、setStatus
publicvoidsetStatus(intstatusCode,Stringmessage);
这个方法设置了响应的状态码,如果状态码已经被设置,新的值将覆盖当前的值。如果提供了一个message,它也将会被作为响应体的一部分被发送。
三、HttpSession接口
定义\
publicinterfaceHttpSession
这个接口被Servlet引擎用来实现在HTTP客户端和HTTP会话两者的关联。这种关联可能在多外连接和请求中持续一段给定的时间。session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。
一个session可以通过cookie或重写URL来维持。
方法
1、getCreationTime
publiclonggetCreationTime();
返回建立session的时间,这个时间表示为自1970-1-1日(GMT)以来的毫秒数。
2、getId
publicStringgetId();
返回分配给这个session的标识符。一个HTTPsession的标识符是一个由服务器来建立和维持的唯一的字符串。
3、getLastAccessedTime
publiclonggetLastAccessedTime();
返回客户端最后一次发出与这个session有关的请求的时间,如果这个session是新建立的,返回-1。这个时间表示为自1970-1-1日(GMT)以来的毫秒数。
4、getMaxInactiveInterval
publicintgetMaxInactiveInterval();
返加一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。在这个时间之后,Servlet引擎可能被Servlet引擎终止。如果这个session不会被终止,这个方法返回-1。
当session无效后再调用这个方法会抛出一个IllegalStateException。
5、getValue
publicObjectgetValue(Stringname);
返回一个以给定的名字绑定到session上的对象。如果不存在这样的绑定,返回空值。
当session无效后再调用这个方法会抛出一个IllegalStateException。
6、getValueNames
publicString[]getValueNames();
以一个数组返回绑定到session上的所有数据的名称。
当session无效后再调用这个方法会抛出一个IllegalStateException。
7、invalidate
publicvoidinvalidate();
这个方法会终止这个session。所有绑定在这个session上的数据都会被清除。并通过HttpSessionBindingListener接口的valueUnbound方法发出通告。
8、isNew
publicbooleanisNew();
返回一个布尔值以判断这个session是不是新的。如果一个session已经被服务器建立但是还没有收到相应的客户端的请求,这个session将被认为是新的。这意味着,这个客户端还没有加入会话或没有被会话公认。在他发出下一个请求时还不能返回适当的session认证信息。
当session无效后再调用这个方法会抛出一个IllegalStateException。
9、putValue
publicvoidputValue(Stringname,Objectvalue);
以给定的名字,绑定给定的对象到session中。已存在的同名的绑定会被重置。这时会调用HttpSessionBindingListener接口的valueBound方法。
当session无效后再调用这个方法会抛出一个IllegalStateException。
10、removeValue
publicvoidremoveValue(Stringname);
取消给定名字的对象在session上的绑定。如果未找到给定名字的绑定的对象,这个方法什么出不做。这时会调用HttpSessionBindingListener接口的valueUnbound方法。
当session无效后再调用这个方法会抛出一个IllegalStateException。
11、setMaxInactiveInterval
publicintsetMaxInactiveInterval(intinterval);
设置一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。
以下这个方法将被取消\
12、getSessionContext
publicHttpSessionContextgetSessionContext();
返回session在其中得以保持的环境变量。这个方法和其他所有HttpSessionContext的方法一样被取消了。
四、HttpSessionBindingListener接口
定义\
publicinterfaceHttpSessionBindingListener
这个对象被加入到HTTP的session中,执行这个接口会通告有没有什么对象被绑定到这个HTTPsession中或被从这个HTTPsession中取消绑定。
方法
1、valueBound
publicvoidvalueBound(HttpSessionBindingEventevent);
当一个对象被绑定到session中,调用此方法。HttpSession.putValue方法被调用时,Servlet引擎应该调用此方法。
2、valueUnbound
publicvoidvalueUnbound(HttpSessionBindingEventevent);
当一个对象被从session中取消绑定,调用此方法。HttpSession.removeValue方法被调用时,Servlet引擎应该调用此方法。
五、HttpSessionContext接口
定义\
此接口将被取消\
publicinterfaceHttpSessionContext
这个对象是与一组HTTPsession关联的单一的实体。
这个接口由于安全的原因被取消,它出现在目前的版本中仅仅是为了兼容性的原因。这个接口的方法将模拟以前的版本的定义返回相应的值。
方法
1、getSession
publicHttpSessiongetSession(StringsessionId);
当初用来返回与这个sessionid相关的session。现在返回空值。
2、getIds
publicEnumerationgetIds();
当初用来返回这个环境下所有sessionid的列表。现在返回空的列表。
六、Cookie类\
定义\
publicclassCookieimplementsCloneable
这个类描述了一个cookie,有关cookie的定义你可以参照NetscapeCommunicationsCorporation的说明,也可以参照RFC2109。
构造函数
publicCookie(Stringname,Stringvalue);
用一个name-value对定义一个cookie。这个name必须能被HTTP/1.1所接受。
以字符$开头的name被RFC2109保留。
给定的name如果不能被HTTP/1.1所接受,该方法抛出一个IllegalArgumentException。
方法
1、getComment
publicStringgetComment();
返回描述这个cookie目的的说明,如果未定义这个说明,返回空值。
2、getDomain
publicStringgetDomain();
返回这个cookie可以出现的区域,如果未定义区域,返回空值。
3、getMaxAge
publicintgetMaxAge();
这个方法返回这个cookie指定的最长存活时期。如果未定义这个最长存活时期,该方法返回-1。
4、getName
publicStringgetName();
该方法返回cookie名。
5、getPath
publicStringgetPath();
返回这个cookie有效的所有URL路径的前缀,如果未定义,返回空值。
6、getSecure
publicbooleangetSecure();
如果这个cookie只通过安全通道传输返回真,否则返回假。
7、getValue
publicStringgetValue();
该方法返回cookie的值。
8、getVersion
publicintgetVersion();
返回cookie的版本。版本1由RFC2109解释。版本0由NetscapeCommunicationsCorporation的说明解释。新构造的cookie默认使用版本0。
9、setComment
publicvoidsetComment(Stringpurpose);
如果一个用户将这个cookie提交给另一个用户,必须通过这个说明描述这个cookie的目的。版本0不支持这个属性。
10、setDomain
publicvoidsetDomain(Stringpattern);
这个方法设置cookie的有效域的属性。这个属性指定了cookie可以出现的区域。一个有效域以一个点开头(.foo.com),这意味着在指定的域名解析系统的区域中(可能是www.foo.com但不是a.b.foo.com)的主机可以看到这个cookie。默认情况是,cookie只能返回保存它的主机。
11、setMaxAge
publicvoidsetMaxAge(intexpiry);
这个方法设定这个cookie的最长存活时期。在该存活时期之后,cookie会被终目。负数表示这个cookie不会生效,0将从客户端删除这个cookie。
12、setPath
publicvoidsetPath(Stringuri);
这个方法设置cookie的路径属性。客户端只能向以这个给定的路径String开头的路径返回cookie。
13、setSecure
publicvoidsetSecure(booleanflag);
指出这个cookie只能通过安全通道(例如HTTPS)发送。只有当产生这个cookie的服务器使用安全协议发送这个cookie值时才能这样设置。
14、setValue
publicvoidsetValue(StringnewValue);
设置这个cookie的值,对于二进制数据采用BASE64编码。
版本0不能使用空格、{}、()、=、,、“”、/、?、@、:以及;。
15、setVersion
publicvoidsetVersion(intv);
设置cookie的版本号
七、HttpServlet类\
定义\
publicclassHttpServletextendsGenericServletimplements
Serializable
这是一个抽象类,用来简化HTTPServlet写作的过程。它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架。
在这个类中的service方法支持例如GET、POST这样的标准的HTTP方法。这一支持过程是通过分配他们到适当的方法(例如doGet、doPost)来实现的。
方法
1、doDelete
protectedvoiddoDelete(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPDELETE操作。这个操作允许客户端请求从服务器上删除URL。这一操作可能有负面影响,对此用户就负起责任。
这一方法的默认执行结果是返回一个HTTPBAD_REQUEST错误。当你要处理DELETE请求时,你必须重载这一方法。
2、doGet
protectedvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPGET操作。这个操作允许客户端简单地从一个HTTP服务器“获得”资源。对这个方法的重载将自动地支持HEAD方法。
GET操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
这一方法的默认执行结果是返回一个HTTPBAD_REQUEST错误。
3、doHead
protectedvoiddoHead(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPHEAD操作。默认的情况是,这个操作会按照一个无条件的GET方法来执行,该操作不向客户端返回任何数据,而仅仅是返回包含内容长度的头信息。
与GET操作一样,这个操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
这个方法的默认执行结果是自动处理HTTPHEAD操作,这个方法不需要被一个子类执行。
4、doOptions
protectedvoiddoOptions(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPOPTION操作。这个操作自动地决定支持哪一种HTTP方法。例如,一个Servlet写了一个HttpServlet的子类并重载了doGet方法,doOption会返回下面的头:
Allow:GET,HEAD,TRACE,OPTIONS
你一般不需要重载这个方法。
5、doPost
protectedvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPPOST操作。这个操作包含请求体的数据,Servlet应该按照他行事。
这个操作可能有负面影响。例如更新存储的数据或在线购物。
这一方法的默认执行结果是返回一个HTTPBAD_REQUEST错误。当你要处理POST操作时,你必须在HttpServlet的子类中重载这一方法。
6、doPut
protectedvoiddoPut(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPPUT操作。这个操作类似于通过FTP发送文件。
这个操作可能有负面影响。例如更新存储的数据或在线购物。
这一方法的默认执行结果是返回一个HTTPBAD_REQUEST错误。当你要处理PUT操作时,你必须在HttpServlet的子类中重载这一方法。
7、doTrace
protectedvoiddoTrace(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
被这个类的service方法调用,用来处理一个HTTPTRACE操作。这个操作的默认执行结果是产生一个响应,这个响应包含一个反映trace请求中发送的所有头域的信息。
当你开发Servlet时,在多数情况下你需要重载这个方法。
8、getLastModified
protectedlonggetLastModified(HttpServletRequestrequest);
返回这个请求实体的最后修改时间。为了支持GET操作,你必须重载这一方法,以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源,从而更加有效地工作。返回的数值是自1970-1-1日(GMT)以来的毫秒数。
默认的执行结果是返回一个负数,这标志着最后修改时间未知,它也不能被一个有条件的GET操作使用。
9、service
protectedvoidservice(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,
IOException;
publicvoidservice(ServletRequestrequest,ServletResponseresponse)
throwsServletException,IOException;
这是一个Servlet的HTTP-specific方案,它分配请求到这个类的支持这个请求的其他方法。
当你开发Servlet时,在多数情况下你不必重载这个方法。
八、HttpSessionBindingEvent类\
定义\
publicclassHttpSessionBindingEventextendsEventObject
这个事件是在监听到HttpSession发生绑定和取消绑定的情况时连通HttpSessionBindingListener的。这可能是一个session被终止或被认定无效的结果。
事件源是HttpSession.putValue或HttpSession.removeValue。
构造函数
publicHttpSessionBindingEvent(HttpSessionsession,Stringname);
通过引起这个事件的Session和发生绑定或取消绑定的对象名构造一个新的HttpSessionBindingEvent。
方法
1、getName
publicStringgetName();
返回发生绑定和取消绑定的对象的名字。
2、getSession
publicHttpSessiongetSession();
返回发生绑定和取消绑定的session的名字。
九、HttpUtils类\
定义\
publicclassHttpUtils
收集HTTPServlet使用的静态的有效的方法。
方法
1、getRequestURL
publicstaticStringBuffergetRequestURL(HttpServletRequest
request);
在服务器上重建客户端用来建立请求的URL。这个方法反映了不同的协议(例如http和https)和端口,但不包含查询字符串。
这个方法返回一个StringBuffer而不是一个String,这样URL可以被Servlet开发者有效地修改。
2、parsePostData
publicstaticHashtableparsePostData(intlen,
ServletInputstreamin);
解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的hashtable。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在POST的数据中出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hashtable中的字符串所对应的值的列表中。
从POST数据读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
当POST数据无效时,该方法抛出一个IllegalArgumentException。
3、parseQueryString
publicstaticHashtableparseQueryString(Strings);
解析一个查询字符串,并创建一个具有关键值-数据对的hashtable。这里的数据是该字符串所对应的值的列表。一个关键值可以出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hashtable中的字符串所对应的值的列表中。
从查询字符串读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
当查询字符串无效时,该方法抛出一个IllegalArgumentException。
bytecode
字节码:由Java编译器和Java解释程序生成的机器代码。
cookie
由Web服务器建立的数据,该数据存储在用户的计算机上,提供了一个Web站点跟踪用户的参数并存储在用户自己硬盘上的方法。
HTTP
超文本传输协议。一个请求响应协议用来连接WWW服务器向客户端浏览器传输HTML页面。
输入流对象\r
一个对象,由ServletInputStream类定义,被Servlet用来从客户端读取请求。
映射\r
由Servlet实例和Servlet返回数据的URL组成的一对,例如,HelloServlet和/hello/index.html。
输出流对象\r
一个对象,由ServletOutputStreamclass类定义,被Servlet用来向客户端返回数据。
requestdispatcherobject
由RequestDispatcher接口定义的一个对象,用来从客户端接收请求,并将其发送到Web服务器上可用的其他资源(例如Servlet、CGI、HTML文件或JSP文件)。
sandboxedservlet
在一个安全性约束下运行的Servlet。
servlet
一个小的,具有平台无关性的,没有图形用户界面的Java程序。它可以在许多方面扩充Web服务的功能。
servletconfigurationobject
ServletConfig接口定义的一个对象,用来配置一个Servlet。
servletcontextobject
ServletContext接口定义的一个对象。给予Servlet有关Servlet引擎的信息。
servlet引擎\r
由Web服务器提供商制作的一个环境,可以允许Servlet在具体的Web服务器上运行。
servlet请求对象
由ServletRequest接口定义的一个对象,允许Servlet获得用关客户端请求的数据。
servletresponseobject
由ServletResponse接口定义的一个对象,允许Servlet作出响应。
servletrunner
JavaServletDeveloper’sKit(JSDK)中的sun.servlet.http.HttpServer过程,它使得Servlet得以运行。
会话跟踪
在一个Web应用程序中,识别一个从同一个客户端发出的连续的唯一的请求的能力。
SSL
加密套接字协议层。一个安全协议,用来在Iternet上的客户端浏览器和服务器交换密钥和加密数据。
URI
统一资源标识。定义一个Internet地址,它是一个URL的超集。
URL
统一资源路径。这个地址定义了到达一个WWW上的文件的路线,通常由协议前缀、域名、目录名和文件名组成。
Excel常用的函数.docx
Excel常用的函数.docxExcel常用的函数.docxExcel常用的函数.docxExcel常用的函数.docx
struts-1.3.10-lib.zip
struts-1.3.10-lib.zip Struts的包,含有需要的jar文件!
javascript王者归来_return_of_the_king.pdf
JavaScript原名LiveScript,JavaScript 详细讲解了JavaScript的面向对象机制,以及继承实现.着重讲解了原型prototype和闭包的概念!
Excel基本操作技巧荟萃.pdf
Excel基本操作技巧荟萃 常用的操作已经一些操作的技巧
打包下载102种常用JS源代码文件.rar
打包下载102种常用JS源代码文件,网页常用JS源代码
java面试59题(含答案).doc
java面试59题(含答案).docjava面试59题(含答案).docjava面试59题(含答案).docjava面试59题(含答案).doc
Capture截取图片.exe
截图工具!小巧灵活,非常的使用<br/>截图工具!小巧灵活,非常的使用<br/>
Winrar 3.9 英文版本 (已注册64位)
Winrar 3.9 英文版本 (已注册)Winrar 3.9 英文版本 (已注册)Winrar 3.9 英文版本 (已注册)Winrar 3.9 英文版本 (已注册)
Tomcat配置精解.rar
Tomcat的配置
增加一个虚拟目录
在server.xml文件中增加 <Context path="/oicq" docBase="myweb" debug="0" reloadable="true">
</Context>
myweb说明其相对webapps的位置,是物理存在的目录;
/oicq说明其相对web URL的路径,是一个虚拟的路径,如:http://localhost/oicq
配置JSP及Servlet
JSP文件直接放在myweb下;
编译好的JavaBean、Servlet放在WEB-INF下的classes目录,而且包的路径要与目录路径一致。
配置服务器的端口
在server.xml文件的第56行,修改port = “8080” 为你所希望使用的端口号,如:80
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
web.xml文件的设置
默认(欢迎)文件的设置
在h:\tomcat4\conf\web.xml中,<welcome-file-list>与IIS中的默认文件意思相同。
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
报错文件的设置
<error-page> <error-code>404</error-code> <location>/notFileFound.jsp</location> </error-page> <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/null.jsp</location> </error-page>
如果某文件资源没有找到,服务器要报404错误,按上述配置则会调用H:\tomcat4\webapps\ROOT\notFileFound.jsp。
如果执行的某个JSP文件产生 NullPointException ,则会调用H:\tomcat4\webapps\ROOT\null.jsp
典型的JSP错误页面应该这样写:
<%@ page isErrorPage=”true”%> 出错了:(</p> 错误信息: <%= exception.getMessage() %><br>
Stack Trace is : <pre><font color="red"><%
java.io.CharArrayWriter cw = new java.io.CharArrayWriter();
java.io.PrintWriter pw = new java.io.PrintWriter(cw,true);
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
exception.printStackTrace(pw);
out.println(cw.toString());
%></font></pre>
会话超时的设置
设置 session 的过期时间,单位是分钟;
<session-config> <session-timeout>30</session-timeout> </session-config>
过滤器的设置
<filter> <filter-name>FilterSource</filter-name> <filter-class>project4. FilterSource </filter-class> </filter> <filter-mapping> <filter-name>FilterSource</filter-name> <url-pattern>/WwwServlet</url-pattern> (<url-pattern>/haha/*</url-pattern>) Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
</filter-mapping> </filter>
过滤: 1) 身份验证的过滤Authentication Filters 2) 日志和审核的过滤Logging and Auditing Filters 3) 图片转化的过滤Image conversion Filters 4) 数据压缩的过滤Data compression Filters 5) 加密过滤Encryption Filters 6) Tokenizing Filters 7) 资源访问事件触发的过滤Filters that trigger resource access events 8) XSL/T 过滤 XSL/T filters 9) 内容类型的过滤 Mime-type chain Filter 注意监听器的顺序,如:先安全过滤,然后资源,然后内容类型等,这个顺序可以自己定,但最好要合理。
监听器的设置
<listener> <listener-class>project4.SALListenerServlet</listener-class> </listener> 监听器分四种,分别是: ServletContextListener :对上下文(全局)对象的创建和销毁进行监听 ServletContextAttributeListener:对上下文对象某一属性的增加、替换、删除进行监听 HttpSessionListener:对Session的创建和销毁进行监听 HttpSessionAttributeListener:对Session某一属性的增加、替换、删除进行监听
Servlet的设置
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>project4.HelloServlet</servlet-class> <init-param> <param-name>age</param-name> <param-value>26</param-value> </init-param> <init-param> <param-name>ip</param-name> <param-value>192.168.5.65</param-value> </init-param> </servlet>
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
<servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping>
解释:
<servlet>内的<servlet-name> 是一个逻辑名,可以是任何有效的标识名,可以将上述配置中的两个<servlet-name>HelloServlet</servlet-name>同时改成<servlet-name>qq</servlet-name>,得到的效果相同,注意要"同时改",这样可以继续保持对应的关系。
<init-param>是Servlet初始参数,在Servlet 的init()方法中通过getInitParameter("ip")取得,返回String型数据,
<servlet-mapping>内的<servlet-name>与<servlet>内的 <servlet-name>一一对应,把客户端对/HeeloServlet的请求对应到<servlet-class>project4.HelloServlet</servlet-class>所指定的位置。
<url-pattern>/HelloServlet</url-pattern>指在IE url中的请求形式。这里的 / 是相对于当前的web目录的,如H:\tomcat4\webapps\myweb
tomcat-users.xml 设置
<tomcat-users> <user name="tomcat" password="tomcat" roles="tomcat" /> <user name="role1" password="tomcat" roles="role1" /> <user name="both" password="tomcat" roles="tomcat,role1" /> <user name="wang" password="tomcat" roles="admin" /> </tomcat-users>
定义用户名和用户所属的角色,在安全性访问中起作用,如Basic,Form等加密方式。
server.xml
<Context path="/icq" docBase="myweb" debug="0" reloadable="true">
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_icq_log." suffix=".txt" timestamp="true"/>
</Context>
Logger 段,为icq这个应用目录建立一个日志文件;
Prefix 是日志文件的前缀; suffix 是日志文件的后缀; myweb说明其相对webapps的位置,是物理存在的目录;
/icq说明其相对web URL的路径,是一个虚拟的路径,如:http://localhost/icq reloadable在开发时比较有用,指自动载入新的Servlet类。
<Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" minProcessors="5" maxProcessors="75" ... ... 大概在server.xml中的第55、56行,配置服务器的端口。
配置日志
日志文件有四个,在jakarta-tomcat-4.0.1\logs目录下,
catalina_log在125行 catalina_log.2002-06-20.txt 记录了tomcat服务器启动的相关信息
localhost_access_log在180行: localhost_access_log.2002-06-20.txt 用来记录客户端访问了哪些资源,格式如: 172.28.11.91 - - [20/Jun/2002:13:29:09 8000] "GET /web/WwwServlet HTTP/1.1" 500 149 200 149 是服务器反应的状态码
localhost_examples_log localhost_examples_log.2002-06-20.txt在213行 这个是examples的日志文件
localhost_log localhost_log.2002-06-20.txt 在190行
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
这里记录了服务器所运行的程序的详细信息。包括错误信息,调试信息等。 用如下写法向这个日志文件写入调试信息 在Servlet中用 getServletContext().log("Servlet 中报的错!"); 或在JSP中用 application.log("哈哈,出错了:("); (ServletContext同application是一回事)
web.xml文件中安全性的设置
<security-constraint> <display-name>test</display-name> <web-resource-collection> <web-resource-name>Success</web-resource-name> <url-pattern>/HelloServlet</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>China of Beijing : ) </realm-name> </login-config>
说明:
<display-name>和<web-resource-name>可以是任意,但最好起一个有意义的名。 <auth-constraint>中<role-name>约束了只有哪些角色可以访问由<url-pattern>指定的资源。
<http-method>对指定方法的访问进行限定,未指出的不进行限定。
<transport-guarantee>指明对转输的数据的要求,有三个可选值:NONE,INTEGRAL,CONFIDENTIAL
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
http://www.ChinaJavaWorld.com/
<login-config>: 内说明的是以何种方式进行身份验证,有三种可选值: None,Digest,Client-Cert,Basic,Form。
<realm-name>:区域名,可以是你想给客户看的提示信息。
另一种验证方式:
<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.htm</form-login-page> <form-error-page>/loginError.htm</form-error-page> </form-login-config> </login-config>
login.htm文件:
<form method="POST" action="j_security_check" > 用户名:<input type="text" name="j_username"> </p> 密 码:<input type="password" name="j_password"> </p> <input type="submit" value="让我进去吧!"> </form> 其中红字部分不能更改,并且区分大小写
Copyright © Java 开发者(www.ChinaJavaWorld.com), All Rights Reserved.
PDG文件格式阅读器
PDG—阅读器
PDG—阅读器
PDG—阅读器
PDG—阅读器
PDG—阅读器
PDG—阅读器PDG—阅读器
PDG—阅读器
一道测试题(一道测试题)
一道测试题
一道测试题
一道测试题
一道测试题
ie布局插件Deveploer
C:\Users\VitsaUser\Downloads\IEDevToolBarSetup.msiC:\Users\VitsaUser\Downloads\IEDevToolBarSetup.msiC:\Users\VitsaUser\Downloads\IEDevToolBarSetup.msiC:\Users\VitsaUser\Downloads\IEDevToolBarSetup.msi
Oracle培训的内部资料
Oracle培训的内部资料.doc Oracle.docOracle培训的内部资料.doc Oracle.docOracle培训的内部资料.doc Oracle.docOracle培训的内部资料.doc Oracle.docOracle培训的内部资料.doc Oracle.doc
Javascript的详细手册
Javascript的详细手册Javascript chm 手册
J2EE相关技术文档大全
Hibernate jsp struts ajax jsf 等等的资料大全
Oracle内训资料ppt
Oracle内训的资料。关于Oracle资料讲解的ppt
IT日语单词300+.xls
日语学习的单词 关于it方面的所有的单词!
DOM_API_帮助手册.chm
DOM手册.chm
DOM手册.chm
DOM手册.chm
DOM手册.chm
DOM手册.chm
日语勉强日语学习的小工具
日语学习的小工具日语学习的小工具日语学习的小工具日语学习的小工具日语学习的小工具
jsp网上书店实例详解(1).rar
jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解jsp网上书店实例详解
多媒体毕业论文.doc
多媒体毕业论文.doc多媒体毕业论文.doc多媒体毕业论文.doc多媒体毕业论文.doc多媒体毕业论文.doc多媒体毕业论文.doc
多媒体课程论文.doc
多媒体,论文 试卷 新编多媒体,论文 试卷 新编多媒体,论文 试卷 新编
课件制作脚本范例.doc
"C:\Documents and Settings\Administrator\桌面\课件制作脚本范例.doc""C:\Documents and Settings\Administrator\桌面\课件制作脚本范例.doc""C:\Documents and Settings\Administrator\桌面\课件制作脚本范例.doc""C:\Documents and Settings\Administrator\桌面\课件制作脚本范例.doc""C:\Documents and Settings\Administrator\桌面\课件制作脚本范例.doc"