zoukankan      html  css  js  c++  java
  • SpringBoot 整合 filter

    一:用idea 创建 springboot 项目:


    详情请参考:《使用IDEA创建一个springboot项目

     

    二:具体代码内容;

    image


    1:springboot 整合 filter  方式一


    FirstFilter


    package com.alancode.springboot.filter;
    /**
     * @author Alan_liu
     * @Create 2021/2/15 20:59
     */
    
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    /**
     * @program: SpringBootAddFilter
     * @description: 第一个控制器   使用配置方式 进行springboot整合 filter
     * Springboot 整合 filter 方式一:
     * <p>
     * <p>
     * *传统spring 方式配置 filter 内容:
     * *   <filter>
     * *       <filter-name>FirstFilter</filter-name>
     * *       <filter-class>com.alancode.springboot.filter.FirstFilter</filter-class>
     * *   </filter>
     * *   <filter-mapping>
     * *       <filter-name>FirstFilter</filter-name>
     * *       <url-pattern>/frist</url-pattern>
     * *   </filter-mapping>
     * @author: Alan_Liu
     * @create: 2021-02-15 20:59
     */
    //@WebFilter(filterName = "FirstFilter",urlPatterns ={"*.do","*.jsp"}/**数组方式设置**/)
    @WebFilter(filterName = "FirstFilter", urlPatterns = {"/frist"})
    
    public class FirstFilter implements Filter {
    	@Override
    	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
    			throws IOException, ServletException {
    
    		System.out.println("__________进入 filter____________________________________-");
    		filterChain.doFilter(servletRequest,servletResponse);
    		System.out.println("__________离开 filter____________________________________-");
    
    	}
    
    }


    FirstServlet

    package com.alancode.springboot.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @program: springBootAddServlet
     * @description: FristServlet
     *  一:传统的spring 框架增加 servlet 的配置方式
     *   <servlet>
     *       <servlet-name>FirstServlet</servlet-name>
     *       <servlet-class>com.alancode.springboot.Servlet.FirstServlet</servlet-class>
     *   </servlet>
     *   <servlet-mapping>
     *       <servlet-name>FirstServlet</servlet-name>
     *       <url-pattern>/frist</url-pattern>
     *   </servlet-mapping>
     *
     */
    
    /***springBoot  配置 servlet 的配置代码
     * @author Alan_Liu***/
    @WebServlet(name="FirstServlet",urlPatterns = "/frist")
    public class FirstServlet extends HttpServlet {
        /**
         *
         *
         *@Param: [req, resp]
         *@return
         *@throws
         *@author Alan_Liu
         *@date   2021/2/14 23:22
         *
         **/
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           //super.doGet(req,resp);
    		System.out.println("------------springBoot 整合 servlet 方式一:注解配置方式------------------------------------------ -----------");
    		System.out.println("-----------项目启动时候加载 @WebServlet 注解下的FirstServlet 类 - ---------------------------------");
    		System.out.println("-----------当进行http://localhost:8080/frist 的浏览器地址访问后,进输出该打印内容 - ----------------------");
    	}
    }
    


    FilterApplication


    package com.alancode.springboot;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    
    /***
     *
     * Springboot 整合 filter 方式一:
     *@Param:
     *@return
     *@throws
     *@author Alan_Liu
     *@date   2021/2/15 21:21
     *
     **/
    @SpringBootApplication(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
    @ServletComponentScan
    public class FilterApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(FilterApplication.class, args);
    	}
    
    }
    /***
     *
     *
     **注意:
     **关于编写启动器需要注意的问题。
     **启动器存放位置:启动器可以和controller 位于同一个包 package下,或者位于controller的上一级包。
     **但是不能把该文件放到controller平行级的包或者其子包下。
     * ServletComponentScan 含义:
     *   在springboot 启动时候进行扫描@webServlet注解的所有servlet、filter类。并将该类实例化
     *
     * ***/
    


    pom.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.2</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.AlanCode.springBoot</groupId>
        <artifactId>springBootAddFilter</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springBootAddFilter</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    


    启动 springboot 项目

    image

    image

    访问控制器

    image


    查看打印信息


    image






    2:springboot 整合 filter  方式二:



    image


    image


    image


    1:SecondFilter

    package com.alancode.springboot.filter;
    /**
     * @author Alan_liu
     * @Create 2021/2/15 21:51
     */
    
    import javax.servlet.*;
    import java.io.IOException;
    
    /**
     * @program: SpringBootAddFilter
     * @description: 第二个拦截器   springboot 整合 filter
     * @author: Alan_Liu
     * @create: 2021-02-15 21:51
     */
    public class SecondFilter implements Filter {
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    
    	}
    
    	@Override
    	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
    		System.out.println("__________进入 Second  filter____________________________________-");
    		filterChain.doFilter(servletRequest,servletResponse);
    		System.out.println("__________离开 Second filter____________________________________-");
    
    	}
    
    	@Override
    	public void destroy() {
    
    	}
    }


    2:SecondServlet

    package com.alancode.springboot.servlet;
    /**
     * @author Alan_liu
     * @Create 2021/2/14 23:46
     */
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     *@program: springBootAddServlet
     *@description: SecondServlet
     *@author: Alan_Liu
     *@create: 2021-02-14 23:46
     */
    public class SecondServlet extends HttpServlet {
    
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		System.out.println("------------springBoot 整合 servlet 方式二: ------------------------------------------ -----------");
    		System.out.println("-----------项目启动SpringBootAddServletApplication2时候加载声明初始化SecondServlet 类  - ---------------------------------");
    		System.out.println("-----------当进行http://localhost:8080/second 的浏览器地址访问后,进输出该打印内容 - ----------------------");
    
    	}
    }



    3:FilterApplication2

    package com.alancode.springboot;
    
    import com.alancode.springboot.filter.SecondFilter;
    import com.alancode.springboot.servlet.SecondServlet;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    
    /***
     *
     * Springboot 整合 filter 方式二:
     *@Param:
     *@return
     *@throws
     *@author Alan_Liu
     *@date 2021/2/15 21:21
     *
     **/
    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
    public class FilterApplication2 {
    
    	public static void main(String[] args) {
    		SpringApplication.run(FilterApplication2.class, args);
    	}
    
    	/**
    	 * 注册 Servlet
    	 * @return
    	 */
    	@Bean
    	public ServletRegistrationBean getServletRegistrationBean() {
    		ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
    		bean.addUrlMappings("/second");
    		System.out.println("------------springBoot 整合 servlet 方式二: ------------------------------------------ -----------");
    		System.out.println("-----------项目启动SpringBootAddServletApplication2时候加载声明初始化SecondServlet 类  - ---------------------------------");
    		System.out.println("-----------当进行http://localhost:8080/second 的浏览器地址访问后,进输出该打印内容 - ----------------------");
    
    		return bean;
    	}
    	/**
    	 * 注册 filter
    	 */
    	@Bean
    	public FilterRegistrationBean  getFilterRegistrationBean(){
        	FilterRegistrationBean bean =new FilterRegistrationBean(new SecondFilter());
            bean.addUrlPatterns("/second");
            /*bean.addUrlPatterns(new String[]{"*.do","*.jsp","*.html"});*/
    	    System.out.println("------------springBoot 整合 filter 方式二: ------------------------------------------ -----------");
    	    return bean;
        }
    
    }
    /***
     *
     *
     **注意:
     **关于编写启动器需要注意的问题。
     **启动器存放位置:启动器可以和controller 位于同一个包 package下,或者位于controller的上一级包。
     **但是不能把该文件放到controller平行级的包或者其子包下。
     * ServletComponentScan 含义:
     *   在springboot 启动时候进行扫描@webServlet注解的所有servlet、filter类。并将该类实例化
     *
     * ***/
    
    为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
    学问:纸上得来终觉浅,绝知此事要躬行
    为事:工欲善其事,必先利其器。
    态度:道阻且长,行则将至;行而不辍,未来可期
    转载请标注出处!
  • 相关阅读:
    一笔期货成交的始末(可能有问题)
    tcp心跳模型
    spring boot 2.0 启动监控端点的方法(spring-boot-starter-actuator)
    netty channel的线程安全性与@Sharable
    为什么使用https
    angularjs post 跨域 Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
    http的keep-alive和tcp的keepalive区别
    最大公约数 最小公倍数--------专题
    hdu 2024 C语言合法标识符
    hdu 2025 查找最大元素
  • 原文地址:https://www.cnblogs.com/ios9/p/14405490.html
Copyright © 2011-2022 走看看