web.xml之servlet与filter配置

servlet配置

一个完整的servlet配置分为两块,< servlet >块和< servlet-mapping >块

< servlet >

<servlet>
    <servlet-name>NameIsServletTest</servlet-name>      <!-- 该servlet标识名,与servlet-mapping中的标识名对应 组成配对 -->
    <servlet-class>com.qq.web.servlet.ServletTest</servlet-class>   <!-- 该servlet全类名 -->
    <init-param>    <!-- 初始化参数 -->
        <param-name>paramName</param-name>   <!-- 初始化参数 键-->
        <param-value>paramValue</param-value>   <!-- 初始化参数 值-->
    </init-param>
    <init-param>    <!-- 初始化参数 可配置多个-->
        <param-name>paramName2</param-name>
        <param-value>paramValue2</param-value>
    </init-param>
</servlet>

< servlet-mapping >

<servlet-mapping>
    <servlet-name>NameIsServletTest</servlet-name>      <!-- 与上面<servlet>下的<servlet-name>一致组成配对 -->
    <url-pattern>/test</url-pattern>    <!-- 该servlet路由配置 -->
</servlet-mapping>

InitParameter获取初始化参数

    Enumeration<String> en1 = getInitParameterNames();      // getInitParameterNames()获取初始化参数的key枚举
    while (en1.hasMoreElements()) {
        String key = en1.nextElement();
        System.out.println("en1-----value:"+getInitParameter(key));     // getInitParameter(key)通过key获取初始化参数的值
    }
  
        // 其实和上面是一样的
    Enumeration<String> en2 = getServletConfig().getInitParameterNames();      // 使用getServletConfig().getInitParameterNames()获取初始化参数的key枚举      
    while (en2.hasMoreElements()) {
        String key2 = en2.nextElement();
        System.out.println("en2-----value:"+getInitParameter(key2));
    }

filter配置

同servlet完整的filter配置也分为两块,< filter >与< filter-mapping >

< filter >

<filter>
    <filter-name>FilterTest</filter-name>   <!-- filter标识名 -->
    <filter-class>com.qq.web.filter.FilterTest</filter-class>  <!--filter全类名-->
    <init-param>    <!--初始化参数-->
        <param-name>filterName</param-name>
        <param-value>filterValue</param-value>
    </init-param>
</filter>

< filter-mapping >

 <filter-mapping>
    <filter-name>FilterTest</filter-name>   <!-- 标识名与上面的相同组成配对 -->
    <url-pattern>/*</url-pattern>       <!-- 匹配要过滤的请求url -->
    <!--
        /* , /login/* 模糊匹配 前面对上了就ok
        /index ,/login  全路径匹配 全部对上才行
        *.html ,*.js 扩展名匹配,后面对上就ok,注意前面不能与 / 
            如果一个url能匹配上多个过滤器 
                过滤器都在xml中配置的话 按配置的前后顺序执行
                过滤器都在注解上配置的  按过滤器类名的字母排序执行
                都有的话  先执行xml中配置的再执行注解配置的
    -->
    <!-- 过滤器拦截的请求类型 -->
    <dispatcher>REQUEST</dispatcher>    <!-- http请求 不写默认时这个 -->
    <dispatcher>FORWARD</dispatcher>    <!-- 请求转发 -->
    <dispatcher>INCLUDE</dispatcher>    <!-- jsp包含 -->
    <dispatcher>ERROR</dispatcher>      <!-- err时跳转 -->
</filter-mapping>

filter获取初始化参数

 public void init(FilterConfig config) throws ServletException {      // 在过滤器的init方法中用config获取初始化参数
    Enumeration<String> filterEn1 = config.getInitParameterNames();
    while (filterEn1.hasMoreElements()){
        System.out.println(config.getInitParameter(filterEn1.nextElement()));
    }
}

上下文初始化参数

<context-param>      <!-- 只能有一对键值用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,任意的Servlet和jsp都可以随时随地访问它 -->
    <param-name>contextName</param-name>
    <param-value>contextValue</param-value>
</context-param>

  // 获取上下文初始化参数
    Enumeration<String> contextEn = getServletContext().getInitParameterNames();      // 全局的资源都在getServletContext()这里
    while (contextEn.hasMoreElements()) {
        System.out.println("context-----value:"+getServletContext().getInitParameter(contextEn.nextElement()));
    }
posted @ 2020-12-02 13:27  笨蛋树上笨蛋果  阅读(393)  评论(0编辑  收藏  举报