20201109_陈宇_
日志
学习总结:
过滤器:
public interface Filter
Filter:是Java中预先定义好了的接口,可以过滤不同的内容,具体怎么过滤,需要使用者定义一个实现类,然后实现接口中的过滤方法,在方法中书写过滤的条件
filter是对客户端访问资源的过滤,符 合条件放行,不符合条件不放行
** 注意事项:过滤器 doFilter 方法默认拦截请求,如果需要经过过滤器之后,可以继续访问资源,要使用 filterChain 对象的 doFilter 方法放行**
过滤器只有被创建出来才能执行,它包括了 init 、 doFilter 、 destroy 三个方法
init方法:
init 方法是初始化方法,当过滤器被部署到web服务器时,服务器启动的时候执行一次
doFilter方法:
只要一个请求符合 Filter 拦截路径,都会执行 doFilter
需要注意的是:如果需要让这个请求通过过滤器,继续访问目标资源,一定得调用 FilterChain 对象的 doFilter 方法,要不然请求就被过滤器拦截了
FilterChain 对象的 doFilter 方法表示对于请求放行
destory方法:
过滤器的销毁方法,服务器停止或者将项目从服务器中移除的时候,过滤器销毁,执行一次 destory 方法
映射路径:
精确匹配模式:
发出的路径需要与过滤器配置的路径完全一致,才能被这个过滤器过滤,精确匹配只对某一个指定的资源进行过滤
模糊匹配模式:
创建 UrlFilter 过滤器的配置的过滤路径为 /*
浏览器发出当前项目的任何请求都会经过当前过滤器
指定目录下的路径配置:
修改 UrlFilter 过滤器的注解配置的过滤路径为 /admin/*
浏览器发出当前项目下 admin 下的任何请求,都会经过过滤器
指定后缀名的路径配置:
修改 UrlFilter 过滤器的注解配置的过滤路径为 *.jsp
浏览器访问当前项目下的任何 jsp 页面,都会经过过滤器
拦截方式:
request:
request是默认的拦截方式:浏览器(客户端)发出的请求都会进行拦截
直接从地址栏访问 index.jsp , Filter 拦截
重定向到 index.jsp , Filter 拦截
无论是直接访问还是重定向访问 index.jsp ,都会执行过滤器
forward:
forward 拦截方式:当前拦截方式表示只有在进 行请求转发时,才会拦截请求进行过滤
两种方式共存:
在配置文件中添加两个 dispatcher 标签或者在 MethodFilter 注解的 dispatcherTypes 中以数 组的形式添加两个拦截方式
过滤器链:
在 xml 配置方式中,过滤器的执行顺序是通过各自的 标签在 web.xml 的顺序执 行的,谁在上面谁先执行
在注解配置方式中,过滤器的执行顺序是通过过滤器的类名的字符顺序决定的
流程:
FilterConfig:
监听器:
web监听器是一种 Servlet 中的特殊的类,它们能帮助开发者监听web中的特定事件
ServletContextListener 用来监听 ServletContext 对象的创建和销毁的
ServletContextListener接口的API:
1.void contextDestroyed(ServletContextEvent sce) 监听servletcontext销毁
2.void contextInitialized(ServletContextEvent sce) 监听servletcontext创建
ServletContextAttributeListener:
作用 : 可以检测 ServletContext 域中属性的变化
学习心得:
最近学习的东西好像落下的东西有点多了,学习状态感觉也不是很好,有点懒散了,可能这就是一系列的连锁反应嘛,学习是永远不会停止的,我必须尽快把状态调整好,将之前以及现在的问题一一的慢慢解决,加紧赶上大家吧,优秀是一种习惯,或许好的学习习惯才是一个人优秀的表现。
近期评论