- 浏览: 1498078 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (523)
- JAVA (334)
- J2EE (18)
- JSP (21)
- JavaScript (14)
- it life (2)
- mobile develop (4)
- UBUNTU (14)
- Algorithm (14)
- DataBase (56)
- Browser/Server (1)
- linux (6)
- fedora (2)
- CSS (1)
- AjAX (3)
- HTML5 (1)
- EJB (1)
- osworkflow (2)
- Java face (5)
- spring (4)
- ICE (1)
- webService (2)
- MongoDB (1)
- JavaThread (4)
- JavaCollections (3)
- Hibernate (2)
- JavaMail (1)
- JavaBasic (1)
- Cache (1)
- https (4)
- DOM4J (1)
- JDOM (0)
- Mybatis (1)
- JUNIT (1)
- eclipse (1)
- easyMock (2)
最新评论
-
yadongliang:
...
自己认为的一些技术点 -
yadongliang:
每次看你头像都看的荷尔蒙分泌失调
WebService的两种方式SOAP和REST比较 (转) -
yadongliang:
hollo 写道一直有这种感觉,盲目的跟风,确实有一些人为了潮 ...
WebService的两种方式SOAP和REST比较 (转) -
welss:
博主,JNative怎么调用dll中的这种方法: int ...
JNative调用DLL -
Java_Antelope:
session.setAttribute和session.getAttribute(
Servlet 是一种比JSP 更早的动态网页编程技术。在没有JSP 之前, Servlet 也是同时充当视图层、业务逻辑层及持久层角色。
Servlet 的开发效率非常低,特别是当使用Servlet 生成表现层页面时,页面中所有的HTML 标签,都需采用Servlet 的输出流来输出,因此极其烦琐。由于Servlet 是个标准的Java 类,因此必须由程序员开发,其修改难度大,美工人员根本无法参与Servlet 页面的开发。这一系列的问题,都阻碍了Servlet 作为表现层的使用。
自MVC 规范出现后, Servlet 的责任开始明确下来,仅仅作为控制器使用,不再需要生成页面标签,也不再作为视图层角色使用。
Servlet ,通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端请求。
Servlet 是个特殊的Java 类,这个Java 类必须继承HttpServlet 。每个Servlet 可以响应户端的请求。Servlet 提供不同的方法用于响应客户端请求。
doGet: 用于响应客户端的get 请求。
doPost: 用于响应客户端的post 请求。
doPut: 用于响应客户端的put 请求。
doDelete: 用于响应客户端的delete 请求。
事实上,客户端的请求通常只有get 和post 两种; Servlet 为了响应这两种请求,必须重写doGet 和doPost 两个方法。如果Servlet 为了响应四个方法,则需要同时重写上面的四个方法。
大部分时候, Servlet 对于所有请求的响应都是完全一样的。此时,可以采用重写一个方法来代替上面的几个方法, Servlet 只需重写service 方法即可响应客户端的所有请求。另外, HttpServlet 还包含两个方法。
init(ServletConfig config): 创建Servlet 实例时,调用的初始化方法。
destroy: 销毁Servlet 实例时,自动调用的资源回收方法。
通常无须重写init和destroy两个方法,除非需要在初始化Servlet 时,完成某些资源初始化的方法,才考虑重写init 方法。如果需要在销毁Servlet 之前,先完成某些资源的回收,比如关闭数据库连接等,才需要重写destroy 方法。
注意:如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用super.init(config) 。该方法将调用HttpServlet 的init 方法。
Servlet 和JSP 的区别在于:
Servlet 中没有内置对象,原来JSP 中的内置对象都必须通过HttpServletRequest对象,或由HttpServletResponse 对象生成:
对于静态的HTML 标签, Servlet 都必须使用页面输出流逐行输出。
这也正是笔者在前面介绍的: JSP 是Servlet 的一种简化,使用JSP 只需要完成程序员需要输出到客户端的内容,至于JSP 中的Java 脚本如何镶嵌到一个类中,由JSP 容器完成。而Servlet 则是个完整的Java 类,这个类的service 方法用于生成对客户端的响应。
Servlet 的配置
编辑好的Servlet 源文件并不能响应用户请求,还必须将其编译成class 文件。将编译后的HelloServlet. class 文件放在WEB-INF/classes 路径下,如果Servlet 有包,则还应该将class 文件放在对应的包路径下。
为了让Servlet 能响应用户请求,还必须将Servlet 配置在Web 应用中。配置Servlet时,需要修改web.xrnl 文件。
配置Servlet 需要配置两个部分。<servlet>/<servlet-mapping>
Servlet的生命周期
Servlet 在容器中运行,其实例的创建及销毁等都不是由程序员决定的,而是由容器进行控制。
Servlet 的创建有两个选择。
客户端请求对应的Servlet 时,创建Servlet 实例:大部分的Servlet 都是这种Servlet。 Web 应用启动时,立即创建Servlet 实例:即load-on-startup Servlet。
每个Servlet 的运行都遵循如下生命周期。
(1)创建Servlet 实例。
(2) Web 容器调用Servlet 的init 方法,对Servlet 进行初始化。
(3) Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。如果客户端有get 请求,容器调用Servlet 的doGet 方法处理并响应请求。对于不同的请求,有不同的处理方法,或者统一使用service 方法处理来响应用户请求。
(4) Web 容器角色销毁Servlet 时,调用Servlet 的destroy 方法,通常在关闭Web容器之时销毁Servlet。
使用Servlet创作为控制器
正如前面见到,使用Servlet 作为表现层的工作量太大,所有的HTML 标签都需要使用页面输出流生成。因此,使用Servlet 作为表现层有如下三个劣势。
开发效率低,所有的HTML 标签都需使用页面输出流完成。
不利于团队协作开发,美工人员无法参与Servlet 界面的开发。
程序可维护性差,即使修改一个按钮的标题,都必须重新编辑Java 代码,并重新编译。
整个结构非常清晰,下面是MVC 中各个角色的对应组件。
M: Model,即模型,对应JavaBean 。
V: View ,即视图,对应JSP 页面。
C: Controller,即控制器,对应Servlet。
load-on-startup Servlet
Servlet 的实例化有两个时机:用户请求之时,或应用启动之时。应用启动时就启动的Servlet 通常是用于某些后台服务的Servlet ,或者拦截很多请求的Servlet; 这种Servlet 通常作为应用的基础Servlet 使用,提供重要的后台服务。如果需要Web 应用启动时,可使用load-on-startup 元素完成Servlet 的初始化。load-on-startup 元素只接收一个整型值,这个整型值越小, Servlet 就越优先初始化。
访问Servlet 的配置参数
配置Servlet 时,还可以增加附加的配置参数。通过使用配置参数,可以实现更好地解耦,避免将所有的参数以硬编码方式写在程序中。
访问Servlet 配置参数要通过ServletConfig 类的实例完成, ServletConfig提供如下方法。
java.lang.String getInitParameter(java.lang.String name): 用于获取初始化参数。
注意: JSP 的内直对象config 就是此处的ServletConfig
自定义标签类
使用标签类,可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP 页面的开发)。
自定义标签类都必须继承一个父类: java.Servlet.jsp.tagext.TagSupport 。除此之外,自定义标签类还有如下要求。
·如果标签类包含属性,每个属性都有对应的getter 和setter 方法。
·重写doStartTag或doEndTag方法,这两个方法生成页面内容。
·如果需要在销毁标签之前完成资源回收,则重写re1ease方法。
TLD 文件
TLD 是Tag Library Definition 的缩写,即标签库定义,文件的后缀是tld ,每个TLD文件对应一个标签库,一个标签库中可包含多个标签。TLD 文件也称为标签库定义文件。标签库定义文件的根元素是taglib,它可以有多个tag 子元素,每个tag 子元素都对应一个标签。
编辑了标签库定义文件还不够, Web 容器还无法加载标签库定义文件。还必须在web.xml 文件中增加标签库的定义。在web.xml 文件中定义标签库时使用taglib 元素,该元素包含两个子元素: taglib-uri和taglib-location,前者确定标签库的URI; 后者确定标签库定义文件的位置。
使用标签库
使用标签库分成以下两步。
(1) 导入标签库:使用taglib 编译指令导入标签。
(2) 使用标签:在JSP 页面中使用自定义标签。
taglib 的语法格式如下:
〈%@ taglib uri="tagliburi" prefix="tagPrefix" %〉
其中uri 属性确定标签库定义文件的URI,这个URI 就是在web.xml 文件中为标签
库定义的URI。而prefix 属性确定的是标签前缀,即在JSP 页面中使用标签时,该标签
库负责处理的标签前缀。
使用标签的语法格式如下:
<tagPrefix : tagName tagAttribute=ntagValue n ...>
<tagBody/>
</tagPrefix>
如果该标签没有标签体,则可以使用如下语法格式:
<tagPrefix : tagName tagAttribute=ntagValue n …/>
带标签体的标签
带标签体的标签,就是允许在标签内嵌套标签,通常可用于完成一些逻辑运算例如判断和循环等。
带标签体的标签需要继承BodyTagSupport,该类包含一个bodyContent 属性,该属性代表标签体。
BodyTagSupport 还包含两个方法。
doAfterBody: 每次处理完标签体后调用该方法。
void doInitBody: 开始调用标签体时调用该方法。
如果有必要,可以重写这两个方法。
在处理标签类的各个方法中,不同的返回值对应不同的含义,常用的返回值有如下几个。
SKIP_BODY: 不处理标签体,直接调用doEndTag方法。
SKIP_PAGE: 忽略标签后面的JSP 页面。
EVAL_PAGE: 处理标签结束,直接处理页面内容。
EVAL_BODY_BUFFERED: 处理标签体。
EVAL_BODY_INCLUDE: 处理标签体,但忽略setBodyContent和doInitBody方法。
EVAL_BODY_AGAIN: 对标签体循环处理。
Filter
Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。
Filter 有如下几个用处。
·在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
·根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
·在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
·根据需要检查HttpServletResponse ,也可以修改HttpServletResponse 头和数据。
Filter 有如下几个种类。
·用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求。
·日志Filter: 详细记录某些特殊的用户请求。
·负责解码的Filter: 包括对非标准编码的请求解码。
.能改变XML 内容的XSLTFilter 等。
一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。
创建一个Filter 只需两个步骤:
(1)创建Filter 处理类:
(2) 在web.xml 文件中配置Filter。
创建Filter 类
创建Filter 必须实现javax.servle t. Filter 接口,在该接口中定义了三个方法。
void init(FilterConfig config): 用于完成Filter 的初始化。
void destroy: 用于Filter 销毁前,完成某些资源的回收。
void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。
执行chain.doFilter(request,reponse)方法,当Filter 对请求过滤后,依然将请求发送到目的地址。如果检查权限,可以在Filter 中根据用户请求的HttpSession,判断用户权限是否足够。
如果权限不够,则调用重定向即可,无须调用chain.doFilter(request,reponse)方法。
配置Filter
Filter 的配置和Servlet 的配置非常相似,都需要配置两个部分:
·配置Filter 名。
·配置Filter 拦截URL 模式。
区别在于, Servlet 通常只配置一个URL ,而Filter 可以同时拦截多个请求的URL。
因此,可以配置多个Filter 拦截模式。
Listener
Listener 的作用非常类似于load-on-startup Servlet。用于在Web 应用启动时,启动某些后台程序,这些后台程序负责为系统运行提供支持。
Listener 与load-on-startup Servlet 的区别在于: Listener 的启动时机比load-on-startup Servlet 早,只是Listener 是Servlet 2.3 规范之后才出现的。
使用Listener 只需要两个步骤:
(1) 创建Listener 实现类。
(2) 在web.xml 文件中配置Listener。
创建Listener 类
创建Li stener 类必须实现ServletContex tListener 接口,该接口包含两个方法。
eontextInitialized(ServletContextEvent see): 启动Web 应用时,系统调用该Filter的方法。
eontextDestroyed(ServletContextEvent see): 关闭Web 应用时候,系统调用Filter
的方法。
配置Listener
正如load-an-startup Servlet 一样, Listener 用于启动Web 应用的后台服务程序,但不负责处理及响应用户请求,因此无须配置URL。
若将Listener 配置在Web 容器中(如果Web 容器支持Listener),则Listener 将随Web 应用的启动而启动。
配置Listener 时使用<listener/>元素,下面是配置Listener 的片段:
<!-- 配置Listener-->
<listener>
<!- 指定Listener 的实现类→
<listener-class>lee.ScheduleListener</listener-class>
</listener>
在上面的配置中,既无须配置Listener 的名字,也无须配置Listener 的URL 只需配置它的实现类即可。此时容器将自动检测部署在容器中的Listener,并在应用启动时,自动加载所有的Listener。
Servlet 的开发效率非常低,特别是当使用Servlet 生成表现层页面时,页面中所有的HTML 标签,都需采用Servlet 的输出流来输出,因此极其烦琐。由于Servlet 是个标准的Java 类,因此必须由程序员开发,其修改难度大,美工人员根本无法参与Servlet 页面的开发。这一系列的问题,都阻碍了Servlet 作为表现层的使用。
自MVC 规范出现后, Servlet 的责任开始明确下来,仅仅作为控制器使用,不再需要生成页面标签,也不再作为视图层角色使用。
Servlet ,通常称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端请求。
Servlet 是个特殊的Java 类,这个Java 类必须继承HttpServlet 。每个Servlet 可以响应户端的请求。Servlet 提供不同的方法用于响应客户端请求。
doGet: 用于响应客户端的get 请求。
doPost: 用于响应客户端的post 请求。
doPut: 用于响应客户端的put 请求。
doDelete: 用于响应客户端的delete 请求。
事实上,客户端的请求通常只有get 和post 两种; Servlet 为了响应这两种请求,必须重写doGet 和doPost 两个方法。如果Servlet 为了响应四个方法,则需要同时重写上面的四个方法。
大部分时候, Servlet 对于所有请求的响应都是完全一样的。此时,可以采用重写一个方法来代替上面的几个方法, Servlet 只需重写service 方法即可响应客户端的所有请求。另外, HttpServlet 还包含两个方法。
init(ServletConfig config): 创建Servlet 实例时,调用的初始化方法。
destroy: 销毁Servlet 实例时,自动调用的资源回收方法。
通常无须重写init和destroy两个方法,除非需要在初始化Servlet 时,完成某些资源初始化的方法,才考虑重写init 方法。如果需要在销毁Servlet 之前,先完成某些资源的回收,比如关闭数据库连接等,才需要重写destroy 方法。
注意:如果重写了init(ServletConfig config)方法,则应在重写该方法的第一行调用super.init(config) 。该方法将调用HttpServlet 的init 方法。
Servlet 和JSP 的区别在于:
Servlet 中没有内置对象,原来JSP 中的内置对象都必须通过HttpServletRequest对象,或由HttpServletResponse 对象生成:
对于静态的HTML 标签, Servlet 都必须使用页面输出流逐行输出。
这也正是笔者在前面介绍的: JSP 是Servlet 的一种简化,使用JSP 只需要完成程序员需要输出到客户端的内容,至于JSP 中的Java 脚本如何镶嵌到一个类中,由JSP 容器完成。而Servlet 则是个完整的Java 类,这个类的service 方法用于生成对客户端的响应。
Servlet 的配置
编辑好的Servlet 源文件并不能响应用户请求,还必须将其编译成class 文件。将编译后的HelloServlet. class 文件放在WEB-INF/classes 路径下,如果Servlet 有包,则还应该将class 文件放在对应的包路径下。
为了让Servlet 能响应用户请求,还必须将Servlet 配置在Web 应用中。配置Servlet时,需要修改web.xrnl 文件。
配置Servlet 需要配置两个部分。<servlet>/<servlet-mapping>
Servlet的生命周期
Servlet 在容器中运行,其实例的创建及销毁等都不是由程序员决定的,而是由容器进行控制。
Servlet 的创建有两个选择。
客户端请求对应的Servlet 时,创建Servlet 实例:大部分的Servlet 都是这种Servlet。 Web 应用启动时,立即创建Servlet 实例:即load-on-startup Servlet。
每个Servlet 的运行都遵循如下生命周期。
(1)创建Servlet 实例。
(2) Web 容器调用Servlet 的init 方法,对Servlet 进行初始化。
(3) Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。如果客户端有get 请求,容器调用Servlet 的doGet 方法处理并响应请求。对于不同的请求,有不同的处理方法,或者统一使用service 方法处理来响应用户请求。
(4) Web 容器角色销毁Servlet 时,调用Servlet 的destroy 方法,通常在关闭Web容器之时销毁Servlet。
使用Servlet创作为控制器
正如前面见到,使用Servlet 作为表现层的工作量太大,所有的HTML 标签都需要使用页面输出流生成。因此,使用Servlet 作为表现层有如下三个劣势。
开发效率低,所有的HTML 标签都需使用页面输出流完成。
不利于团队协作开发,美工人员无法参与Servlet 界面的开发。
程序可维护性差,即使修改一个按钮的标题,都必须重新编辑Java 代码,并重新编译。
整个结构非常清晰,下面是MVC 中各个角色的对应组件。
M: Model,即模型,对应JavaBean 。
V: View ,即视图,对应JSP 页面。
C: Controller,即控制器,对应Servlet。
load-on-startup Servlet
Servlet 的实例化有两个时机:用户请求之时,或应用启动之时。应用启动时就启动的Servlet 通常是用于某些后台服务的Servlet ,或者拦截很多请求的Servlet; 这种Servlet 通常作为应用的基础Servlet 使用,提供重要的后台服务。如果需要Web 应用启动时,可使用load-on-startup 元素完成Servlet 的初始化。load-on-startup 元素只接收一个整型值,这个整型值越小, Servlet 就越优先初始化。
访问Servlet 的配置参数
配置Servlet 时,还可以增加附加的配置参数。通过使用配置参数,可以实现更好地解耦,避免将所有的参数以硬编码方式写在程序中。
访问Servlet 配置参数要通过ServletConfig 类的实例完成, ServletConfig提供如下方法。
java.lang.String getInitParameter(java.lang.String name): 用于获取初始化参数。
注意: JSP 的内直对象config 就是此处的ServletConfig
自定义标签类
使用标签类,可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP 页面的开发)。
自定义标签类都必须继承一个父类: java.Servlet.jsp.tagext.TagSupport 。除此之外,自定义标签类还有如下要求。
·如果标签类包含属性,每个属性都有对应的getter 和setter 方法。
·重写doStartTag或doEndTag方法,这两个方法生成页面内容。
·如果需要在销毁标签之前完成资源回收,则重写re1ease方法。
TLD 文件
TLD 是Tag Library Definition 的缩写,即标签库定义,文件的后缀是tld ,每个TLD文件对应一个标签库,一个标签库中可包含多个标签。TLD 文件也称为标签库定义文件。标签库定义文件的根元素是taglib,它可以有多个tag 子元素,每个tag 子元素都对应一个标签。
编辑了标签库定义文件还不够, Web 容器还无法加载标签库定义文件。还必须在web.xml 文件中增加标签库的定义。在web.xml 文件中定义标签库时使用taglib 元素,该元素包含两个子元素: taglib-uri和taglib-location,前者确定标签库的URI; 后者确定标签库定义文件的位置。
使用标签库
使用标签库分成以下两步。
(1) 导入标签库:使用taglib 编译指令导入标签。
(2) 使用标签:在JSP 页面中使用自定义标签。
taglib 的语法格式如下:
〈%@ taglib uri="tagliburi" prefix="tagPrefix" %〉
其中uri 属性确定标签库定义文件的URI,这个URI 就是在web.xml 文件中为标签
库定义的URI。而prefix 属性确定的是标签前缀,即在JSP 页面中使用标签时,该标签
库负责处理的标签前缀。
使用标签的语法格式如下:
<tagPrefix : tagName tagAttribute=ntagValue n ...>
<tagBody/>
</tagPrefix>
如果该标签没有标签体,则可以使用如下语法格式:
<tagPrefix : tagName tagAttribute=ntagValue n …/>
带标签体的标签
带标签体的标签,就是允许在标签内嵌套标签,通常可用于完成一些逻辑运算例如判断和循环等。
带标签体的标签需要继承BodyTagSupport,该类包含一个bodyContent 属性,该属性代表标签体。
BodyTagSupport 还包含两个方法。
doAfterBody: 每次处理完标签体后调用该方法。
void doInitBody: 开始调用标签体时调用该方法。
如果有必要,可以重写这两个方法。
在处理标签类的各个方法中,不同的返回值对应不同的含义,常用的返回值有如下几个。
SKIP_BODY: 不处理标签体,直接调用doEndTag方法。
SKIP_PAGE: 忽略标签后面的JSP 页面。
EVAL_PAGE: 处理标签结束,直接处理页面内容。
EVAL_BODY_BUFFERED: 处理标签体。
EVAL_BODY_INCLUDE: 处理标签体,但忽略setBodyContent和doInitBody方法。
EVAL_BODY_AGAIN: 对标签体循环处理。
Filter
Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。
Filter 有如下几个用处。
·在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
·根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
·在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
·根据需要检查HttpServletResponse ,也可以修改HttpServletResponse 头和数据。
Filter 有如下几个种类。
·用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求。
·日志Filter: 详细记录某些特殊的用户请求。
·负责解码的Filter: 包括对非标准编码的请求解码。
.能改变XML 内容的XSLTFilter 等。
一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。
创建一个Filter 只需两个步骤:
(1)创建Filter 处理类:
(2) 在web.xml 文件中配置Filter。
创建Filter 类
创建Filter 必须实现javax.servle t. Filter 接口,在该接口中定义了三个方法。
void init(FilterConfig config): 用于完成Filter 的初始化。
void destroy: 用于Filter 销毁前,完成某些资源的回收。
void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。
执行chain.doFilter(request,reponse)方法,当Filter 对请求过滤后,依然将请求发送到目的地址。如果检查权限,可以在Filter 中根据用户请求的HttpSession,判断用户权限是否足够。
如果权限不够,则调用重定向即可,无须调用chain.doFilter(request,reponse)方法。
配置Filter
Filter 的配置和Servlet 的配置非常相似,都需要配置两个部分:
·配置Filter 名。
·配置Filter 拦截URL 模式。
区别在于, Servlet 通常只配置一个URL ,而Filter 可以同时拦截多个请求的URL。
因此,可以配置多个Filter 拦截模式。
Listener
Listener 的作用非常类似于load-on-startup Servlet。用于在Web 应用启动时,启动某些后台程序,这些后台程序负责为系统运行提供支持。
Listener 与load-on-startup Servlet 的区别在于: Listener 的启动时机比load-on-startup Servlet 早,只是Listener 是Servlet 2.3 规范之后才出现的。
使用Listener 只需要两个步骤:
(1) 创建Listener 实现类。
(2) 在web.xml 文件中配置Listener。
创建Listener 类
创建Li stener 类必须实现ServletContex tListener 接口,该接口包含两个方法。
eontextInitialized(ServletContextEvent see): 启动Web 应用时,系统调用该Filter的方法。
eontextDestroyed(ServletContextEvent see): 关闭Web 应用时候,系统调用Filter
的方法。
配置Listener
正如load-an-startup Servlet 一样, Listener 用于启动Web 应用的后台服务程序,但不负责处理及响应用户请求,因此无须配置URL。
若将Listener 配置在Web 容器中(如果Web 容器支持Listener),则Listener 将随Web 应用的启动而启动。
配置Listener 时使用<listener/>元素,下面是配置Listener 的片段:
<!-- 配置Listener-->
<listener>
<!- 指定Listener 的实现类→
<listener-class>lee.ScheduleListener</listener-class>
</listener>
在上面的配置中,既无须配置Listener 的名字,也无须配置Listener 的URL 只需配置它的实现类即可。此时容器将自动检测部署在容器中的Listener,并在应用启动时,自动加载所有的Listener。
发表评论
-
Spring官网改版后下载
2014-04-11 10:39 776Spring官网改版后找了好久都没有找到直接下载Jar包的链接 ... -
Java 系统架构设计
2014-03-31 21:18 1502首先分为网关和引擎等多个部分: 第一部分:网关 1、主要负责转 ... -
Java 提高系统性能
2014-03-03 22:22 2615首先是从三方面来提高的,应用层面,服务器端层面,数据库层面。 ... -
2013年11月份艺龙旅行网面试题
2013-11-22 23:39 12681.给你两个字符串s1="abc",s2= ... -
国猪555555555
2013-11-22 00:16 1113国足第一招:场地太差,不适应。 国足第二招:场地太好,不适应。 ... -
自己认为的一些技术点
2013-08-14 00:12 12621.rest风格的编程。 2.memcached的命中率低的问 ... -
HttpClient
2013-01-14 23:57 1058package org.abin.lee.test.http; ... -
JAVA单例模式读取properties配置文件
2012-12-16 01:12 2673前段时间出差去做一个数据接口的项目,有很多参数需要从工程中的配 ... -
Java 反射调用方法
2012-10-22 23:52 979package lc.abin.lee.reflect; i ... -
Java Https单向,双向验证
2012-09-23 22:47 3021https一般来说有单项SSL和双向SSL连接之分。 单项 ... -
Java中的transient,volatile和strictfp关键字
2012-09-12 18:00 838http://www.iteye.com/topic/5295 ... -
Server JBoss v5.0 at localhost was unable to start within 50 seconds.
2012-09-05 11:35 1887[标题]:[转]JBoss was unable to sta ... -
HttpUrlConnection 开发例子
2012-03-25 16:23 3364/*** * * 发送HTTP请求 * @ ... -
Java Enum类型定义的方法
2012-03-12 12:34 2354//枚举接口 package com.abin.info.s ... -
Rational Rose 2003 下载及破解方法
2012-03-06 12:49 1397FROM:http://blog.csdn.net/fengl ... -
使用Spring进行面向切面(AOP)编程
2012-02-22 10:35 23521.aop理论知识 横切性关注点:对哪些方法拦截,拦截后怎么处 ... -
BASE64、MD5、SHA、HMAC几种加密算法
2012-02-21 12:53 8811BASE64编码算法不算是真正的加密算法。 MD5、 ... -
文本文件和二进制文件区别及java中字节流和字符流归纳
2012-02-17 15:48 2999首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的 ... -
Java 字节流转化为文件
2012-02-17 15:46 5766已知:byte[] bytes=new FileToBytes ... -
Java核心之Java内存分配原理
2012-02-17 13:40 957JAVA内存分配与管理是Java的核心技术之一,之前我们曾介绍 ...
相关推荐
Servlet是一个Java类,遵循javax.servlet.Servlet接口,它允许开发者扩展服务器的功能。当用户向Web服务器发送一个请求时,Servlet会接收到这个请求,处理数据,然后返回响应。Servlet的主要生命周期方法包括:`init...
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...
刚刚接触java时做的日志管理系统,做的很简单,适合初学着 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet...
Servlet是Java Web开发中的核心组件,它是一种服务器端的接口,用于处理来自客户端(通常是Web浏览器)的请求并返回响应。在Java EE中,Servlet API是实现这些功能的基础框架。`javax.servlet.Servlet`是Servlet的...
Servlet API还提供了Filter的概念,允许开发者在请求到达Servlet之前和响应离开Servlet之后对其进行拦截和处理。`javax.servlet.Filter`接口定义了`doFilter()`方法,这使得我们可以实现如认证、日志记录、数据过滤...
《深入理解Jakarta Servlet API 4.0源码》 Servlet技术是Java Web开发的核心,它为Web应用程序提供了服务器端的编程接口。Jakarta Servlet API 4.0是Servlet规范的最新版本,它包含了对HTTP协议处理、生命周期管理...
Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....
Servlet 线程安全问题 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常...
Servlet是Java平台上的一个核心技术,用于构建动态Web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端Java程序如何与HTTP协议交互,以及如何处理来自Web客户端的请求并生成响应。这份"Servlet...
### Servlet基础知识及应用详解 #### 一、Servlet概述 Servlet是一种服务器端的Java技术,用于扩展应用程序的功能。它主要用于Web应用程序开发,可以处理客户端发送到Web服务器的各种请求,并且能够生成动态网页。...
<servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservice </servlet...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
Servlet API与Servlet源码(SRC)是Java Web开发中的核心组成部分,主要应用于服务器端的动态网页处理。在本文中,我们将深入探讨这两个概念及其在Java EE(以前的J2EE)环境中的应用。 Servlet API是Java Servlet...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这份"Servlet3.0参考手册"无疑为开发者提供了全面的API参考和实用指南。 首先,Servlet3.0...
`servlet-src`通常指的是Servlet的源代码,这对于理解Servlet的工作原理、学习如何编写Servlet以及进行自定义功能扩展非常有用。在这个压缩包中,我们可能会找到`javax`包,这是Java标准库的一部分,包含了Servlet...
用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。 像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...
Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer Pages)规范的API接口。这个库文件主要用于与Web服务器交互,处理HTTP请求,并生成响应。在本文中,我们将深入探讨Servlet...