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. UIAlertViewController+TextField 输入框

    if (IOS8) { UIAlertController *alertController=[UIAlertController alertControllerWithTitle:CustomLoc ...

  2. keystone之预备知识点

    1.webobwebob是一个用来封装http request和http response的一个库,都封装成实例,方便解析http request和构建http response.最佳教程地址: ht ...

  3. Upgrading to MySQL 5.7---focusing on temporal types

    https://www.percona.com/blog/2016/04/27/upgrading-to-mysql-5-7-focusing-on-temporal-types/ http://ww ...

  4. 5.6 在线DDL (online DDL)详解

    ONLINE ddl 原理: online ddl相关参数 测试原表数据是否能进行ONLINE DDL方法: online DDL 局限性 测试

  5. MySQL架构优化实战系列2:主从复制同步与查询性能调优

  6. DOS 命令 attrib:修改文件属性

    有时候系统中病毒之后会把自己的所有文件的属性改为隐藏只读格式,如果手动修改的话太麻烦并且浪费时间,不如用 Attrib 命令试试. 步骤: 1:开始->运行,在里面输入 cmd,打开命令行界面: ...

  7. Top 10 Algorithms for Coding Interview--reference

    By X Wang Update History:Web Version latest update: 4/6/2014PDF Version latest update: 1/16/2014 The ...

  8. 利用android studio gsonformat插件快速解析复杂json

    在android开发过程中,难免会遇到json解析,在这篇文章中为你快速解析复杂的json. 首先,在android studio中安装gsonformat插件. 点击File->Setting ...

  9. Android_gridView_LIstener_examle

    layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  10. [置顶] 运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy),三大件(bigthree problem)

    一般的我们喜欢这样对对象赋值: Person p1;Person p2=p1; classT object(another_object), or    A a(b); classT object = ...