zoukankan      html  css  js  c++  java
  • filter通过web.xml配置总结

            前言:这部分是我学习Filter通过web.xml配置时,总结和验证一些心得和总结,可能对您没有任何用处。主要是web.xml中<filter>标签和<filter-map>标签的配置顺序对于初始化Filter影响的顺序和调用Filter的顺序。
            首先请看下面代码
          
        public void init(FilterConfig filterConfig) throws ServletException
        {
            // TODO Auto-generated method stub
             doctor=filterConfig.getInitParameter("DoctorWho");
            System.out.println("*******");
            System.out.println("*******");
            count++;
            System.out.println(doctor);
            System.out.println(count);
            System.out.println("*******");
            System.out.println("*******");
        }

            这个是Filter接口中的init方法主要是初始化Filter的一些参数,我当时感觉的困惑的是这句代码:

            doctor=filterConfig.getInitParameter("DoctorWho");
            通过过滤器配置文件,找到参数名“ DoctorWho”就可以找到参数名的值。先看下面的xml配置部分。
        <filter>
            <filter-name>Doctor</filter-name>
            <filter-class>helloJava.guess.FilterGuess</filter-class>
            <init-param>
                <param-name>DoctorWho</param-name>
                <param-value>DoctorLiu</param-value>
            </init-param>
        </filter>

            我认为是tomcat是通过通过web.xml中读取到<filter>时就会调用相关的Filter的init方法。

            我写了一个验证类去验证先关问题。
    package helloJava.guess;
    
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletRequest;
    
    public class FilterGuess  implements Filter
    {
    
        @Override
        public void destroy()
        {
            // TODO Auto-generated method stub
            
        }
        private int count=0;
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException
        {
            // TODO Auto-generated method stub
            chain.doFilter(request, response);
            System.out.println("*******");
            System.out.println("*******");
            count++;
            System.out.println(doctor);
            System.out.println(count);
            System.out.println("*******");
            System.out.println("*******");
        }
        private String doctor;
        @Override
        public void init(FilterConfig filterConfig) throws ServletException
        {
            // TODO Auto-generated method stub
             doctor=filterConfig.getInitParameter("DoctorWho");
            System.out.println("*******");
            System.out.println("*******");
            count++;
            System.out.println(doctor);
            System.out.println(count);
            System.out.println("*******");
            System.out.println("*******");
        }
    
    }

            我想到的问题为

            如果web.xml中<filter>标签中,有两个标签的<filter-name>不同,但是<filter-class>相同,会实例化几个对象?
    web.xml配置内容为:
         
        <filter>
            <filter-name>Doctor</filter-name>
            <filter-class>helloJava.guess.FilterGuess</filter-class>
            <init-param>
                <param-name>DoctorWho</param-name>
                <param-value>DoctorLiu</param-value>
            </init-param>
        </filter>
    <filter>
            <filter-name>Phd</filter-name>
            <filter-class>helloJava.guess.FilterGuess</filter-class>
            <init-param>
                <param-name>DoctorWho</param-name>
                <param-value>PhdLiu</param-value>
            </init-param>
        </filter>
            根据控制台输出的结果,发现有两个标签的<filter-name>不同,但是<filter-class>相同时,会实例化不同的对象。
                                                                                                                    菜包子 
                                                                                                    2013年6月5日23:44:15 于宿舍
     
     
     
     
  • 相关阅读:
    什么企业邮箱安全性高?国内哪家企业邮箱好用?
    163VIP邮箱外贸群发技巧有哪些?
    163邮箱如何群发邮件?外贸邮箱群发哪个效果好?
    登录163邮箱续费情况怎么查询?163vip邮箱怎么收费?
    Java面试题总结之Java基础(二)
    Java面试题总结之Java基础(一)
    Exception in thread "baseScheduler_QuartzSchedulerThread" java.lang.OutOfMemoryError: GC
    Maven项目报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    如何下载Github上项目源码打包到本地Maven仓库
    HTML日期时间插件
  • 原文地址:https://www.cnblogs.com/CaiBaoZi/p/3120210.html
Copyright © 2011-2022 走看看