zoukankan      html  css  js  c++  java
  • Filter(过滤器)

    1. 不使用SpringBoot

        Filter过滤类

    1 public class FilterDemo implements Filter {
    2 
    3     @Override
    4     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    5         System.out.println("开始拦截");
    6         filterChain.doFilter(servletRequest,servletResponse);
    7         System.out.println("拦截结束");
    8     }
    9 }

        代码说明:过滤类需要实现Filter接口,主要是一下三个方法的继承

    //初始化方法
    public default void init(FilterConfig filterConfig) throws ServletException {}
    //实际过滤操作,主要是实现这个方法
    public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException;
    //Filter销毁方法
     public default void destroy() {}

        web.xml配置:

    <!-- Filter,过滤器 -->
        <filter>
            <!-- filter名,随便起 -->
            <filter-name>AdminFilter</filter-name>
            <!-- 实现类所在目录 -->
            <filter-class>cn.daitao.filter.DemoFilter</filter-class>
            <!-- 初始化参数 -->
            <!-- 设置字符集,charset:UTF-8 -->
            <init-param>
                <!-- 参数名 -->
                <param-name>charset</param-name>
                <!-- 参数值 -->
                <param-value>UTF-8</param-value>
            </init-param>
    
            <!-- 设置内容类型及其字符集,contentType:text/html;charset=UTF-8 -->
            <init-param>
                <param-name>contentType</param-name>
                <param-value>text/html;charset=UTF-8</param-value>
            </init-param>
        </filter>
    
        <!-- filter的映射 -->
        <filter-mapping>
            <!-- 对应的filter名 -->
            <filter-name>AdminFilter</filter-name>
            <!-- 要进行拦截过滤的目录 -->
            <url-pattern>/web/admin/*</url-pattern>
        </filter-mapping>
    
        <session-config>
            <!-- 超时时间,单位:分钟 -->
            <session-timeout>30</session-timeout>
        </session-config>

      2. 使用SpringBoot

        Filter过滤类:

     1 import javax.servlet.*;
     2 import javax.servlet.annotation.WebFilter;
     3 import javax.servlet.annotation.WebInitParam;
     4 import java.io.IOException;
     5 
     6 @WebFilter(
     7         filterName = "CharsetFilter",
     8         urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
     9         initParams = {
    10                 @WebInitParam(name = "charset", value = "utf-8")/*这里可以放一些初始化的参数*/
    11         }
    12 )
    13 public class FilterDemo implements Filter {
    14 
    15     @Override
    16     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    17         System.out.println("开始拦截");
    18         filterChain.doFilter(servletRequest,servletResponse);
    19         System.out.println("拦截结束");
    20     }
    21 }

         代码说明:主要是新增了一个@WebFilter注解,下面是@WebFilter注解的详细说明。

         @WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 )

         @WebFilter的属性

          

         SpringBoot配置类的配置:

    package cn.wolfcode;
    
    import cn.wolfcode.filterdemo.FilterDemo;
    import cn.wolfcode.interceptor.DemoInterceptor;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @SpringBootApplication
    public class AppStart implements WebMvcConfigurer {
        /**
         * 配置过滤器
         * @return
         */
        @Bean
        public FilterDemo filterDemo(){
            return new FilterDemo();
        }
        public static void main(String[] args) {
            SpringApplication.run(AppStart.class,args);
        }
    }

        使用注入Bean的方法配置,还可以使用自动扫描配置。

  • 相关阅读:
    Windows 8.1 应用开发文章汇总
    演绎事件委托
    Azure China
    Orchard 刨析:导航篇
    为ASP.NET MVC应用程序使用高级功能
    兼容Mono的下一代云环境Web开发框架ASP.NET vNext
    商品导航菜单
    纳斯达克对经济泡沫的定义是:当交易价格远大于内在价值的时候,就称为泡沫(转)
    当一个低级问题,第一次解决时,你会感受到成就;第二次解决时,你感受到责任,第三次解决时,你可能更多的感受到无力(转)
    互联网组织的未来:剖析GitHub员工的任性之源(转)
  • 原文地址:https://www.cnblogs.com/dai-tao/p/13118384.html
Copyright © 2011-2022 走看看