filter,listener

Filter (过滤器)
Listener(监听器)

    Filter 
      作用:
          一般用于完成通用的操作。登陆验证,编码初六,敏感字符等
       使用步骤
             1.定义一个类,实现接口Filter,
                   注意:该接口是javax.servlet包下的接口 
             2.覆写方法
                   doFilter(...)
                   init(...)
                   destroy()
             3.配置拦截路径  
                  1.web.xml的配置方式 
                      <filter>
                         <filter-name>demo</filter-name>   为该类取名
                         <filter-class>过滤器全限定类名</filter-class>
                       </filter> 
                       <filter-mapping> 
                          <filter-name>demo</filter-name>  
                          <url-pattern>/*</url-pattern>  配置要过滤的路径
                        </filter-mapping>
                    2.使用注解的方式 
                          在Filter接口的实现类的类上使用@WebFilter注解 
                          可以设置过滤那些路径,
                           如:  @WebFilter("/two.html") 
                       其实还可以指定拦截的目录,不一定要指定文件
                         如, /user/*  :表示user目录下的所有资源
                       也可以设置后缀名拦截  
                          如:  *.jsp    表示所有后缀为jsp的资源会被拦截,而且该方式不需要以斜杠开头
             生命周期  
                         在服务器启动后,会创建Filter对象,调用init方法,且只执行一次,一般用于加载资源
                         服务器关闭后,Filter对象被销毁,销毁前先调用destroy方法,前提是正常关闭服务器,执行一次,释放资源
                         dofilter()方法是每一次请求被拦截时,会执行,
                            当然拦截后,处理完后,可以放行
                              Filterchain.dofilter(ServletRequest,ServletResponse)
            执行流程
                         请求路径
                         拦截,执行过滤器dofilter方法
                         放行后,可请求访问路径
                         请求结束后,返回来执行放行后的代码
              
               拦截方式的配置 
                   资源被访问的方式
                      : 
                          设置dispatcherTypes属性
                            REQUEST: 默认值 , 浏览器直接请求资源时,被拦截
                            FORWARD:转发访问资源  ,只有转发资源时,过滤器才会拦截
                            INCLUDE: 包含访问资源
                            ERROR :错误跳转资源
                            ASYNC:异步访问资源
                            
                           注解方式 
                                使用: 
                                    @WebFilter(value="/demo" , dispatcherTypes=DispatcherType.REQUEST)
                                        这样子注解,当要设置多个值时,要使用大括号括起来
                        
                            web.xml配置
                                 设置   <dispatcher></dispatcher>标签即可   ,里面也有5个取值 
                                  该标签配置在 <filter-mapping> 标签里面
                       
            过滤器链(配置多个过滤器)
                       执行流程   
                           过滤器1 
                           过滤器2
                           资源执行
                           过滤器2
                           过滤器1
                            
                            多个过滤器的执行顺序
                         注解配置
                                按照类名的字符串比较顺序规则比较,值小的先执行
                                 如  AFilter 和  BFilter,  AFilter先执行
                                 且创建的顺序也和名称有关
                           web.xml配置 
                                谁定义在上边,就先执行谁      
                     
                     多个过滤器时,先创建胡先销毁,servlet会在过滤器前销毁,
                     监视器会在最后销毁  

Listener
,最先创建胡
事件监听机制
事件:一件事
事件源:事件发生的地方
监听器:一个对象
注册监听:将事件,事件源,监听器绑定在一起,当事件源发生某个事件后,执行监听代码

             ServletContextListener:监听ServletContext对象的创建和销毁
                       void contextDestroyed(ServletContextEvent sce) 
                             ServletContext对象销毁前会调用  
                         在服务器关闭时,Servletcontext对象销毁,正常关闭
      
                       void contextInitialized(ServletContextEvent sce)
                              ServletContext对象创建后会调用方法 ,服务器启动后自动创建
                              初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 
                              来得到context-param 设定的值,举例,contextConfigLocation是参数名

       配置监听器     
          web.xml
               <listener> 
                   <listener-class>全限定类名</listener-class>
                </listener> 
                  
                  可以指定初始化参数 
                     <context-param>
                           <param-name>参数名<//param-name>
                           <paeam-value>/WEB-INF/classes/</param-value>
                       </context-param>
       获取参数 
             servletContext.getInitParameter("参数名")

   注解   @WebListener
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值