我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
Filter过滤器
- 概念:web过滤器当访问服务器时,过滤器可以将一写访问拦截下来,完成一些特殊功能;
- 作用:一般用于完成通用的操作,如:登陆验证,编码的统一管理,敏感词字符过滤..
- 快速入门
-
步骤:
- 定义一个类,实现接口Filter
- 复写方法
- 配置拦截路径
- web.xml
- 注解
-
代码:
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
-
<filter>
<filter-name> 过滤器配置名称</filter-name>
<filter-class> 过滤器的类路径</filter-class>
</filter>
<filter-mapping>
<filter-name>过滤器配置名称</filter-name>
<url-pattern>过滤器的路径</url-pattern>
</filter-mapping>
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//这是服务器用于启动对象加载资源每次创建Filter时都会调用一次,也只执行一次;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//这是每一次请求被拦截资源时,会执行,并且执行多次.
}
@Override
public void destroy() {
//这里是销毁,在服务器关闭后Filter对象被销毁,只执行一次用于释放资源.
-
过滤器的执行流程
1.执行过滤器
2.执行过滤器放行后的资源
3.执行过滤器放行代码下边的代码 -
过滤器的生命周期
- init 执行一次,在服务器开启后,创建Filter对象调用init方法执行一次,用于加载资源;
- doFilter 执行多次,每一次请求被拦截后都会被执行一次;
- destory 执行一次,在服务器关闭后,销毁Filter对象调用destory方法执行一次,用于释放资源.
-
过滤器配置详解
- 拦截路径的配置
- 拦截方式的配置
1.注解配置
- 设置dispatcherTypes属性
- 1.Request:默认值
- 2.Forward:转发访问资源
- 3.Include:包含访问资源
- 4.Error:错误跳转资源
- 5.Async:异步访问资源
2.xml配置
- 设置内容即可
-
过滤器链(配置多个过滤器)
- 过滤器的执行顺序
- 过滤器1;
- 过滤器2;
- 资源执行;
- 过滤器2;
- 过滤器1;
- 过滤器先后顺序问题
- 可以通过按字符串规则比较来制定执行顺序;
如:AFilter和 BFilter A就先执行; - web.xml配置也可以通过来进行设置,谁定义在上边谁先执行.
- 可以通过按字符串规则比较来制定执行顺序;
- 过滤器的执行顺序
监听器
Listener:web三大组件之一.
ServletContextListener:时间监听机制,
方法:
1. ContextDestroyed:
- ServletContext方法销毁时调用此方法
2.ContextInitalized:
- ServletContext方法创建时调用此方法.
配置:
1. xml配置
<Listener>类文件名<Listener/>
2. 注解配置
- @WebListener
步骤:
1.实现ServletContextListener接口
2.复写方法
3.配置文件