Servlet接口上,与生命周期及请求服务相关的三个方法是init()、service()与destory()方法。当Web容器加载Servlet类并实例化之后,会生成ServletConfig对象并调用init()方法,将ServletConfig对象当作参数传入。ServletConfig相当于Servlet在web.xml中的设置代表对象,可以利用它来取得Servlet初始参数。

GenericServlet同时实现了Servlet及ServletConfig。主要的目的就是将初始Servlet调用init()方法所传入的ServletConfig封装起来。

当希望编写代码在Servlet初始化时运行,要重新定义无参数的init()方法,而不是有ServletConfig参数的init()方法或构造器。

ServletConfig上还定义了getServletContext()方法,这可以取得ServletContext实例,这个对象代表了整个web应用程序,可以从这个对象取得ServletContext初始参数,或者设置、取得、移除ServletContext属性。

每个Web应用程序都会有一个相对应的ServletContext,针对应用程序初始化时所需用到的一些参数资料,可以在web.xml中设置应用程序初始参数,设置时使用<context-param>标签来定义。每一对初始参数要使用一个<context-param>来定义。

在整个web应用程序生命周期,Servlet所需共享的资料可以设置为ServletContext属性。由于ServletContext在Web应用程序存活周期都会一直存在,所以设置为ServletContext属性的资料,除非主动移除,否则也是一直存活于Web应用程序中。

监听器顾名思义,就是可监听某些事件的发生,然后进行一些想做的事情。在Servlet/JSP中,如果想要在ServletRequest、HttpSession与ServletContext对象创建、销毁时收到通知,则可以实现以下相对应的监听器:  ServletRequestListener  HttpSessionListener  ServletContextListener

Servlet/JSP中可能设置属性的对象有ServletRequest、HttpSession与ServletContext、如果想在这些对象被设置、移除、替换属性时收到通知,则可以实现以下相对应的监听器:  ServletRequestAttributeListener  HttpSessionAttributeListener  ServletContextAttributeListener

Servlet/JSP中如果某个对象即将加入HttpSession中成为属性,而你想要该对象在加入HttpSession、从HttpSession移除、HttpSession对象在JVM间迁移时收到通知,则可以在将成为属性的对象上,实现以下相对应的监听器:  HttpSessionBingingListener  HttpSessionActivationListener

在Servlet/JSP中要实现过滤器,必须实现Filter接口,并在web.xml中定义过滤器,从容器知道加载哪个过滤类。Filter接口有三个要实现的方法,init()、doFilter()与destory(),三个方法的作用与Servlet接口的init()、service()、destory()类似。

Filter接口的init()方法的参数是FilterConfig,FilterConfig为过滤器定义的代表对象,可以通过FilterConfig的getInitParameter()方法来取得初始参数。

当请求来到过滤器时,会调用Filter接口的doFilter()方法,doFilter()上除了ServletRequest与ServletResponse之外,还有一个FilterChain参数。如果调用了FIlterChain的doFilter()方法,就会运行下一个过滤器,如果没有下一个过滤器了,就调用请求目标Servlet的service方法。如果因为某个条件(例如用户没有通过验证)而不调用FilterChain的doFilter(),则就不会继续至目标Servlet,这时就是所谓的拦截请求。

在实现Filter接口时,不用理会这个Filter前后是否有其它的Filter,完全作为一个独立的元件进行设计。

对于容器产生的HttpServletRequest对象,无法直接修改某些信息,如请求参数值。可以继承HttpServletRequestWrapper类(父类ServletRequestWrapper),并编写想要重新定义的方法。对于HttpServletResponse对象,则可以继承HttpServletResponseWrapper类(父类ServletResponseWrapper)来对HttpServletResponse对象进行封装。

【JSP&Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器的更多相关文章

  1. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  2. Java学习笔记之---Servlet

    Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...

  3. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  4. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  5. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  6. servlet学习笔记四

    Servlet 主要内容: 1)servlet初始化参数与上下文参数 2)过滤器 3)监听器一.servlet初始化参数与上下文参数 1)servlet初始化参数 把某些变量放在web.xml配置,到 ...

  7. Django:学习笔记(7)——模型进阶

    Django:学习笔记(7)——模型进阶 模型的继承 我们在面向对象的编程中,一个很重要的的版块,就是类的继承.父类保存了所有子类共有的内容,子类通过继承它来减少冗余代码并进行灵活扩展. 在Djang ...

  8. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  9. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  10. amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules

    amazeui学习笔记二(进阶开发3)--HTML/CSS规范Rules 一.总结 1.am:以 am 为命名空间 2.模块状态: {命名空间}-{模块名}-{状态描述} 3.子模块: {命名空间}- ...

随机推荐

  1. COM编程VS实践

    目录 1. 2. 2.1. 2.2. 2.3. 3. 3.1. 3.2. 3.3. 1.COM实践简介 因需要对Office系列进行程序操作,特研究了一下COM相关的编程. 个人体会:COM面向接口编 ...

  2. windows环境下搭建ffmpeg开发环境

           ffmpeg是一个开源.跨平台的程序库,能够使用在windows.linux等平台下,本文将简单解说windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows ...

  3. OC语言--NSFileManager&amp; NSFileHandle

    1.关于文件的介绍 ->什么是文件: 文件概念, 广义文件. 狭义文件(磁盘文件). 文件常见的使用操作(可用命令行演示文件操作的使用场景). ->什么是路径: 简单来说就是,在系统中,要 ...

  4. SQL Server查询所有用户表

    select name from sysobjects where xtype='u' order by name

  5. sphinx 增量索引 及时更新、sphinx indexer索引合成时去旧和过滤办法(转)

    一.sphinx增量索引的设置    数据库中的已有数据很大,又不断有新数据加入到数据库中,也希望能够检索到.全部重新建立索引很消耗资源,因为我们需要更新的数据相比较而言很少.例如.原来的数据有几百万 ...

  6. oracle删除表语句

    删除表(记录和结构)的语名delete   ————   truncate      ———— drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意 ...

  7. Ⅰ.Spring的点点滴滴--序章

    spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 .net篇(环境为vs2012+Spring.Core.dll) 新建一个控制台 using Spring.Context; ...

  8. 16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17

    EOBD2.FR is offering 16% discount off the latest MPPS V16 ECU chip tuning tool. The device is now so ...

  9. nginx性能配置参数说明:

    nginx的配置:main配置段说明一.正常运行的必备配置: 1.user username [groupname]; 指定运行worker进程的用户和组 2.pid /path/to/pidfile ...

  10. Java内存模型——可见性

    /** * 可见性问题 * @author Snway * */public class Visibility {        private static boolean stop;        ...