过滤器

1定义:过滤器是一个服务器的组件,他可以截取用户端的请求与响应信息,并对这些信息进行过滤;过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。

2过滤器的工作原理:

3过滤器的生命周期

4过滤器的方法

5创建过滤器

继承java.servlet .filter接口

web.xml的配置

Dofilter中间放行

Chain.dofilter(request,response);

init 方法使用 FilterConfig 对象获取参数

public void init(FilterConfig config) throws ServletException {

// 获取初始化参数

String site = config.getInitParameter("Site");

// 输出初始化参数

System.out.println("网站名称: " + site);

}

6过滤器可以改变用户请求的web资源,不能直接返回数据,处理用户的请求

7过滤器链

多个过滤器配置

<filter>
<filter-name>LogFilter</filter-name>
<filter-class>com.runoob.test.LogFilter</filter-class>
<init-param>
     <param-name>test-param</param-name>
     <param-value>Initialization Paramter</param-value>
</init-param></filter>
<filter>
<filter-name>AuthenFilter</filter-name>
<filter-class>com.runoob.test.AuthenFilter</filter-class>
<init-param>
     <param-name>test-param</param-name>
     <param-value>Initialization Paramter</param-value>
</init-param></filter>

8过滤器链的执行过程

执行先后顺序,由web.xml中的过滤器的配置先后决定

9过滤器的分类

当创建java类6.0的项目时,过滤器可选择ASYNC种类的过滤器。

@webfilter用于将一个类声明为过滤器,该注解会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。

@webfilter{添加属性}

当使用异步时,web.xml 中servlets的异步支持要选择true

子元素可以设置的值及其意义

REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。

INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。

FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。

ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

10过滤器的应用

主要常用第一点和第二点

1请求认证的情景

2当许多个页面都需要过滤的时候,就需要初始化参数

3编码格式场景

监听器

1指专门用于其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动。

2监听对象

1按照对象划分:应用环境对象,用户对话对象,请求消息对象

2按照监听事件划分:

监听域对象自身的创建和销毁的时间监听器

监听域对象的属性的增加和删除的时间监听器

监听绑定到HttpSesstion域中的某个对象的状态的时间监听器

3web监听器的概念:

Servlet规范中定义的一种特殊类

用于监听ServletContext、httpSession和Servletreqquest等域对象的创建和销毁

用户监听域对象属性发生修改的事件

可以在事件发生前、发生后做一些必要的处理

4监听器的用途

5创建监听器

1创建类引用ServletContextListener接口

2 web.xml中配置

ContextInitialized()初始化方法,在web项目启动时执行

ContextDestroy()销毁方法,在关闭项目后执行

6监听器的启动顺序

7监听域对象自身的创建和销毁的时间监听器

ServletContextListener的监听

作用:(全局属性对象;定时器)获取参数,或者使用setAttrutube方法插入参数,在别的地方获取参数值

HttpSessionListener的监听 一对多

当用户访问的时候执行初始化方法,销毁 的时候执行销毁方法

作用:(在线人数,登录日志)

ServletRequestListener 一对多

作用(读取参数,记录访问历史)

8监听属性的增加和删除

Request.setAttribute()是Request.getAttribute()获取值得唯一方法

Request.getParamter()是获取request的请求参数

9监听绑定到HttpSession域中的某个对象的状态和时间监听器

1绑定就是setAttribute,非绑定就是removeAttribute

2钝化和活化,钝化本质在于把服务器中不经常使用的session对象暂时序列化到系统文件系统或者是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成。

用户的实例绑定

钝化和活化实例

10监听器在Servlet3.0应用



Servlet3.0

最新版本的Servlet3.0,引入了新特性,新增注释,异步处理,可插性支持等内容。

新增注释

通过使用注释就无需在web.xml中对servlet或者过滤器进行配置。

@Webservlet

@WebFilter

@WebListener

@WebInitParam

JavaWeb基础-过滤器监听器的更多相关文章

  1. JavaWeb基础—过滤器Filter

    一.概念 JavaWeb三大组件之一(组件都有一个特性,需要在web.xml中配置) 过滤器:会在一组资源(jsp servlet等)的前面执行,可以让请求得到目标资源,也可以终止请求,不再继续 也就 ...

  2. Javaweb基础--->利用监听器统计在线用户数量和用户信息

    首页布局:index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  3. Javaweb基础--->过滤器filter(转发)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  4. JavaWeb基础—监听器Listener

    javaWeb三大组件: servlet listener(用的不多) filter 什么叫监听器: 初次相见:AWT 二次相见:SAX(XML解析时)Bundle 绑定 监听器是一个接口,内容由我们 ...

  5. Javaweb基础--->监听器listener(转发)

    JavaWeb中的监听器 1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 Servl ...

  6. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  7. JavaWeb 基础面试

    1. 启动项目时如何实现不在链接里输入项目名就能启动?  修改Tomcat配置文件 server.xml.找到自己的项目配置 : <Context docBase="oneProjec ...

  8. 超全面的JavaWeb笔记day20<监听器&国际化>

    JavaWeb监听器 三大组件: l Servlet l Listener l Filter Listener:监听器 1. 初次相见:AWT 2. 二次相见:SAX 监听器: l 它是一个接口,内容 ...

  9. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

随机推荐

  1. 转——git常见使用命令及git原理

    0.常用命令1 1.git中brunch的使用和理解(一定理解brunch的指针理解和分叉) 分支创建 Git 是怎么创建新分支的呢? 很简单,它只是为你创建了一个可以移动的新的指针. 比如,创建一个 ...

  2. 【awk】提取文件第一列

    生信数据文件一般是按列分开的,如果我们只想简单的提取一列而不是费尽周折写个程序提取哪一列的话,awk作为一个非常好用的文档处理工具,我们现在来简单看一下他的一些功能: awk '{print $1}' ...

  3. MySQL条件检索_WHERE

    MySQL使用WHERE命令来限定数据查询条件. 语法:SELECT 属性1,属性2 FROM 表名 WHERE 条件1 OR 条件2 AND 条件3 说明:WHERE同样适用于UPDATE.DELE ...

  4. Python 类的特性讲解

    类的特性讲解 类的特性 #定义一个类, class是定义类的语法,Role是类名, (object)是新式类的写法,必须这样 写,以后再讲为什么 class Role(object): #初始化函数, ...

  5. Python 多进程基本语法

    需求:  在有多线程的情况下,我们可以使用线程帮我们处理一些事情,但是在python这里 由于RSA锁的缘故,我们只能够用到一个cpu帮我们处理事情,一个cpu在处理多个线程时,是通过上下文的切换使我 ...

  6. 3. Dubbo原理解析-Dubbo内核实现之动态编译 (转)

    转载自  斩秋的专栏  http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 我们运行的Java代码,一般都是编译之后的字节码 ...

  7. SpringCloud学习2-Springboot监控模块(actuator)

    前言 学习一项新技术最大的困难是什么? 是资料.让人高兴的是找到了一本系统学习Spring Cloud的教程,<Spring Cloud微服务实战>, 接下来的学习目标将以此书顺序演进. ...

  8. SpringBoot HttpServletResponse Header Cookie输出问题

    问题: 在一次Response写入header和cookie的时候,发现部分信息没有被输出 工具类: CookieUtils: import java.io.IOException; import j ...

  9. Character流与Byte流的区别(转)

    Character流与Byte流的区别是 A) 每次读入的字节数不同 B) 前者带有缓冲,后者没有C) 前者是字符读写,后者是字节读写 D) 二者没有区别,可以互换使用 Java的流操作分为字节流和字 ...

  10. 一个SQL查询出每门课程的成绩都大于80的学生姓名

    name   kecheng    fenshu 张三     语文     81 张三     数学     75 李四     语文     76 李四     数学     90 王五     ...