过滤器&监听器
1. 过滤器
1.1什么是过滤器
- Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是Servlet 程序、Listener 监听器、Filter 过滤器。
- Filter 过滤器它是 JavaEE 的规范,也就是一个接口。
- Filter 过滤器它的作用是拦截请求和过滤响应。拦截请求常见的应用场景有权限检查、日记操作、事务管理等等。
1.2过滤器的作用
Filter:过滤器一方面可以过滤掉不需要的内容,也可以对内容进行加工处理。
过滤器可以加很多个
过滤器是在servlet之前加的
实现过滤器和servlet的结合需要进行关联并且实现跳转的功能(类似servlet的转发和重定向)
1.3 过滤器的功能
功能:
1.用来拦截传入的请求和传出的响应
2.修改或以某种方式处理正在客户端和服务器端之间交换的数据流。
如何使用?
与使用servlet(也是一个接口)类似,Filter是javaWeb提供的一个接口,开发者只需要自定义一个类实现该接口就可以了。
1.4 Filter过滤器的使用
public class AdminFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//过滤器被创建
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//一般都会调用放行方法让程序继续往下访问用户目标资源
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
//过滤器被删除
}
}
编写一个类去实现 Filter 接口,并实现过滤方法 doFilter()
1.5 过滤器的web.xml文件配置
<filter>
<filter-name>character</filter-name>
<filter-class>com.southwind.filter.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>character</filter-name>
<url-pattern>/test</url-pattern>
</filter-mapping>
2. 监听器
2.1 什么是监听器
监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。
2.2 Listener接口分类
2.2.1 ServletContext监听器
- ServletContextListener监听ServletContext对象
- ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改
2.2.2 HttpSession监听器
- HttpSessionListener监听Session对象
- HttpSessionAttributeListener监听Session中的属性操作
- HttpSessionActivationListener监听HTTP会话的active和passivate情况,passivate是指非活动的session被写入持久设备(比如硬盘),active相反。
注意: HttpSessionActivationListener不需要web.xml配置文件
- HttpSessionBindingListener监听器:感知Session绑定的事件监听器
注意: HttpSessionBindingListener不需要web.xml配置文件
2.2.3 ServletRequest监听器
- ServletRequestListener监听Request对象
- ServletRequestAttributeListener监听Requset中的属性操作