Filter过滤器和Listener * 详解
作者:lqh 发布时间:2021-08-20 07:39:38
标签:Filter,过滤器,Listener, ,
Filter过滤器和Listener * 详解
Filter过滤器
Filter的简介
对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。
Filter的使用
编写一个类,继承并实现javax.servlet.Filter。
package com.jyh.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterDemo1 implements Filter {
private FilterConfig filterConfig;
public FilterDemo1(){
System.out.println("实例化了");
}
//初始化
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//通过这个获取过滤器在web.xml里面的配置信息
this.filterConfig = filterConfig;
System.out.println("过滤器初始化了");
}
//执行
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//获取在web.xml中本过滤器配置的名为encoding的参数
String encoding = filterConfig.getInitParameter("encoding");
if(encoding == null){
encoding = "UTF-8";
}
//设置编码格式
req.setCharacterEncoding(encoding);
res.setContentType("text/html;charset=" + encoding);
System.out.println("过滤前");
//放行
chain.doFilter(req, res);
System.out.println("过滤后");
}
//销毁
@Override
public void destroy() {
System.out.println("过滤器销毁了");
}
}
在web.xml中配置Filter
<filter>
<filter-name>FilterDemo1</filter-name>
<filter-class>com.jyh.filter.FilterDemo1</filter-class>
<!-- 配置参数 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterDemo1</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器是用来对访问进去过滤的,所以需要在请求前做什么和请求之后做什么都可以用过滤器来做,例如编码的设置,自动登录等。串联过滤器什么的听着就知道是什么情况了。
Listener *
编写一个类继承实现以下 * 接口。
监听ServletContext、HttpSession、ServletRequest对象的创建和销毁的 *
ServletContextListener:
HttpSessionListener:
SerlvetRequestListener:
监听ServletContext、HttpSession、ServletRequest属性(attributes)变化的 *
ServletContextAttributeListener
HttpSessionAttributeListener
SerlvetRequestAttributeListener
1.感知型 * :不需要注册。
HttpSessionBindingListener:实现该接口的类的实例,能够感知自己何时被放到了HttpSession域范围中,和何时从HttpSession域范围中删除。
HttpSessionActivationListener:实现该接口的类的实例,能够感知自己何时随着HttpSession钝化和激活。
在web.xml配置一下
<listener>
<!-- 指向自己缩写的 * 类 -->
<listener-class>com.jyh.listener.MyContextListener</listener-class>
</listener>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/nicorui/article/details/54578106


猜你喜欢
- 前言在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小
- 一、如何显示assets/license.txt(中文)的内容? (1)方法1:InputStream.available()得到字节数,然
- 废话不多说了,直接步入正题了。1、批量添加元素session.insert(String string,Object o)public vo
- 以卖票的例子来介绍多线程和资源共享,下面我们
- 使用@Indexed加快启动速度Spring读取@Component组件(派生性),有两种实现方式,一种是反射,一种是ASM。反射性能低主要
- 本文实例为大家分享了C#实现简易多人聊天室的具体代码,供大家参考,具体内容如下只有一个群聊的功能服务端using System;using
- 前言Spring中的Profile功能其实早在Spring 3.1的版本就已经出来,它可以理解为我们在Spring容器中所定义的Bean的逻
- mybatis-plus-generator + clickhouse 自动生成代码依赖<!--> mybatis-plus &
- 下面还有投票,帮忙投个票👍前言最近在看某个开源项目代码并准备参与其中,代码过了一遍后发现多个自定义的配置文件用来装载业务配置代替数据库查询,
- android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloA
- 背景:重做系统后重新配置Android studio 安装虚拟机后无法启动log中显示为启动AVD的进程被杀控制台显示为:在虚拟机列表里没有
- 配置准备在build.gradle文件中添加如下依赖: compile "org.elasticsearc
- 本文实例讲述了Android开发实现的计时器功能。分享给大家供大家参考,具体如下:效果图:布局:三个按钮 加上一个Chronometer&l
- 主要有四个:public——成员可以由任何代码访问。private——成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字
- 一、死锁简介在多道程序设计环境下,多个进程可能竞争一定数量的资源,。一个进程申请资源,如果资源不可用,那么进程进入等待状态。如果所申请的资源
- 方法调用在程序运行时,进行方法调用是最普遍,最频繁的操作方法调用不等于方法执行:方法调用阶段唯一的任务就是确定被调用的方法版本,即调用哪一个
- 本文描述了TCP协议,首先简单介绍了TCP完成了一些什么功能;介绍了TCP报文格式,以及典型报文的数据格式;接着从链路控制和数据传输两个方面
- 本文实例讲述了C#正则表达式匹配与替换字符串功能。分享给大家供大家参考,具体如下:事例一:\w+=>[A-Za-z1-9_],\s+=
- 前言本文是我之前写的这篇文章《Android图文混排-实现EditText图文混合插入上传》的升级版,除了在EditText实现了图片上传之
- 二维(多维)vector添加一个空项今天刷Leecode,需要创建一个二维vector,vector<vector < int