20201109_陈宇_

日志

学习总结:

过滤器:

​ public interface Filter

​ Filter:是Java中预先定义好了的接口,可以过滤不同的内容,具体怎么过滤,需要使用者定义一个实现类,然后实现接口中的过滤方法,在方法中书写过滤的条件

​ filter是对客户端访问资源的过滤,符 合条件放行,不符合条件不放行

​ ** 注意事项:过滤器 doFilter 方法默认拦截请求,如果需要经过过滤器之后,可以继续访问资源,要使用 filterChain 对象的 doFilter 方法放行**

image-20201109231123588

image-20201109231158369

​ 过滤器只有被创建出来才能执行,它包括了 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 的顺序执 行的,谁在上面谁先执行

​ 在注解配置方式中,过滤器的执行顺序是通过过滤器的类名的字符顺序决定的

​ 流程:

image-20201109232317392

FilterConfig:

image-20201109232410470

监听器:

​ web监听器是一种 Servlet 中的特殊的类,它们能帮助开发者监听web中的特定事件

​ ServletContextListener 用来监听 ServletContext 对象的创建和销毁的

​ ServletContextListener接口的API:

​ 1.void contextDestroyed(ServletContextEvent sce) 监听servletcontext销毁

​ 2.void contextInitialized(ServletContextEvent sce) 监听servletcontext创建

​ ServletContextAttributeListener:

​ 作用 : 可以检测 ServletContext 域中属性的变化

image-20201109232716183

学习心得:

​ 最近学习的东西好像落下的东西有点多了,学习状态感觉也不是很好,有点懒散了,可能这就是一系列的连锁反应嘛,学习是永远不会停止的,我必须尽快把状态调整好,将之前以及现在的问题一一的慢慢解决,加紧赶上大家吧,优秀是一种习惯,或许好的学习习惯才是一个人优秀的表现。

标签

评论

this is is footer