JavaWeb基础-过滤器监听器
过滤器
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基础-过滤器监听器的更多相关文章
- JavaWeb基础—过滤器Filter
一.概念 JavaWeb三大组件之一(组件都有一个特性,需要在web.xml中配置) 过滤器:会在一组资源(jsp servlet等)的前面执行,可以让请求得到目标资源,也可以终止请求,不再继续 也就 ...
- Javaweb基础--->利用监听器统计在线用户数量和用户信息
首页布局:index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- Javaweb基础--->过滤器filter(转发)
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- JavaWeb基础—监听器Listener
javaWeb三大组件: servlet listener(用的不多) filter 什么叫监听器: 初次相见:AWT 二次相见:SAX(XML解析时)Bundle 绑定 监听器是一个接口,内容由我们 ...
- Javaweb基础--->监听器listener(转发)
JavaWeb中的监听器 1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 Servl ...
- JavaWeb基础知识总结
JavaWeb基础知识总结. 1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...
- JavaWeb 基础面试
1. 启动项目时如何实现不在链接里输入项目名就能启动? 修改Tomcat配置文件 server.xml.找到自己的项目配置 : <Context docBase="oneProjec ...
- 超全面的JavaWeb笔记day20<监听器&国际化>
JavaWeb监听器 三大组件: l Servlet l Listener l Filter Listener:监听器 1. 初次相见:AWT 2. 二次相见:SAX 监听器: l 它是一个接口,内容 ...
- JavaWeb基础: ServletContext
基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...
随机推荐
- CentOS 7 使用SVN+Apache搭建版本控制服务器
svn简介 Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. ...
- SpringMVC 允许跨域访问 也可以选择限制指定IP 允许访问 对象的数据传输
java ajax
- centos7.3配置python2、3环境与配置各自pip
环境:CentOS-7-x86_64-Everything-1611 No.1 查看CentOS对Python的默认依赖 [root@cs ~]# ls /usr/bin/python* /usr/b ...
- elastichd安装部署
1.下载 elastichd下载地址:https://github.com/360EntSecGroup-Skylar/ElasticHD/releases或是直接在linux下下载wget http ...
- [c/c++] programming之路(16)、指针
一.调戏百度云管家 #include<stdlib.h> #include<windows.h> _declspec(dllexport) void go(){ ){ Shel ...
- Java同步锁——lock与synchronized 的区别【转】
在网上看来很多关于同步锁的博文,记录下来方便以后阅读 一.Lock和synchronized有以下几点不同: 1)Lock是一个接口,而synchronized是Java中的关键字,synchroni ...
- 【问题解决:信息提示】SpringBoot启动时提示The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
问题描述 springboot程序在启动时提示信息 [2018-10-24 21:59:05.214] - 440 信息 [restartedMain] --- org.apache.catalina ...
- WEB 前端插件整理
Vs Code 系统插件 #1 Bracket Pair Colorizer 让括号拥有独立的颜色,易于区分.可以配合任意主题使用. #2 Code Runner 非常强大的一款插件,能够运行多种语言 ...
- js没有函数重载
上面这道题,要求判断输出的y和z分别为什么 一开始,我选择了2,4 后来发现答案是4,4 意识到js中没有函数重载!!!即使声明了两个同名函数,结果也是后面的函数覆盖了前一个函数. 而且函数声明会提升 ...
- 使用scss为css样式自动添加浏览器前缀
当一个浏览器实现一个新的属性.值或者选择器,而这个特征还不是处于候选推荐标准状态的时候,这属性的前面会添加一个前缀以便于它的渲染引擎识别. 浏览器使用前缀来尝试一些新属性.值和选择器,即使他们还没有最 ...