zoukankan      html  css  js  c++  java
  • Spring Boot整合Servlet,Filter,Listener,访问静态资源

    Spring Boot整合Servlet(两种方式)

    1. 新建一个maven项目
      在这里插入图片描述
      创建完成后的结构图:
      在这里插入图片描述
    2. 引入pom.xml依赖
    	<!--引入父项目-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.4.RELEASE</version>
        </parent>
        <dependencies>
            <!--SpringBoot web启动器-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    

    第一种方式(通过注解扫描方式完成Servlet组件的注册):

    1. 通过注解扫描方式完成Servlet组件的注册
      1.1. 创建一个Servlet

    在这里插入图片描述
    1.2. 编写Servlet代码:

    @WebServlet(name = "firstServlet",urlPatterns = "/firstServlet") //urlPatterns:访问路径
    public class firstServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("进来了firstServlet");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
        }
    

    1.3. 编写启动类
    创建springboot启动类
    在这里插入图片描述
    代码:

    @SpringBootApplication
    //在spring boot启动时会扫描@WebServlet注解,并创建该类的实例
    @ServletComponentScan
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    
    

    注意:在启动类上需要加上@ServletComponentScan注解 意思是:在启动时扫描@WebServlet注解 ,创建Servlet的实例

    1.4. 运行启动类 ,在浏览器输入localhost:8080/firstServlet
    在这里插入图片描述
    控制台输出信息
    在这里插入图片描述

    第二种方式(通过方法完成Servlet组件的注册)

    1. 创建一个Servlet
      在这里插入图片描述
    2. 创建springboot启动类
      在这里插入图片描述
      在main方法下新建一个注册Servlet组件的方法
    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    
        //添加一个方法,方法名无要求,必须返回ServletRegistrationBean。注册Servlet对象
        @Bean     //主键等价于<bean>标签
        public ServletRegistrationBean<SecondServlet> getServletRegistrationBean(){
            ServletRegistrationBean<SecondServlet> bean=
                    new ServletRegistrationBean<SecondServlet>(new SecondServlet(),"/SecondServlet");
            return bean;
        }
    }
    
    1. 运行启动类 在浏览器输入 localhost:8080/SecondServlet
      在这里插入图片描述
    2. 控制台打印信息
      在这里插入图片描述

    Springboot整合Filter (和整合Servlet方式差不多)

    第一种方式(通过注解扫描方式完成Fliter组件的注册)

    1. 新建一个Filter类
      在这里插入图片描述
    2. 继承Filter父类 实现接口
      在这里插入图片描述
      代码如下:
    @WebFilter(filterName = "firstFilter", urlPatterns = "/firstFilter")
    public class firstFilter implements Filter {
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            System.out.println("----进入FirstFilter-----");
            chain.doFilter(request, response);//放行
            System.out.println("----离开FirstFilter-----");
        }
    }
    
    1. 创建启动类

      代码如下:
    @SpringBootApplication
    //在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例
    @ServletComponentScan
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    
    }
    

    运行启动类,在浏览器输入 localhost:8080/firstFilter
    在这里插入图片描述
    这里报404是因为没有写放行后的路径;

    控制台打印信息:
    在这里插入图片描述

    第二种方式(通过方法方式完成Filter组件的注册)

    1. 创建Filter类 不用写@WebFilter注解
      在这里插入图片描述
    2. 启动类
      在这里插入图片描述
      代码如下:
    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    
        //添加一个方法
        @Bean
        public FilterRegistrationBean<SecondFilter> getFilterRegistrationBean(){
            FilterRegistrationBean<SecondFilter> bean=
                    new FilterRegistrationBean<SecondFilter>(new SecondFilter());
            bean.addUrlPatterns("*.do","*.jsp","/SecondFilter"); //以.do , .jsp , SecondFilter结尾路径的都会进到过滤器
            return bean;
        }
    }
    
    
    1. 运行启动类 在浏览器输入 localhost:8080/SecondFilter
      在这里插入图片描述
      控制台打印信息:
      在这里插入图片描述

    Springboot整合Listener (同上)

    通过注解扫描方式完成Fliter组件的注册

    1. 创建Listener类
      在这里插入图片描述
      在这里插入图片描述
      Listener代码:
    @WebListener()
    public class firstListener implements ServletContextListener{
        //监听application对象的创建
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("-----------application对象创建-----------------");
        }
    }
    
    
    1. 创建启动类
      在这里插入图片描述
      代码:
    @SpringBootApplication
    @ServletComponentScan  //在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    
    1. 运行启动类 看控制台打印信息
      在这里插入图片描述

    第二种方式(通过方法完成Listener组件注册)

    代码一样 省略代码 直接上代码

    1. 创建Listener类
    2. 启动类
      在这里插入图片描述
      代码:
    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
        @Bean
        public ServletListenerRegistrationBean<firstListener> getServletListenerRegistrationBean(){
            ServletListenerRegistrationBean<firstListener> bean=
                    new ServletListenerRegistrationBean<firstListener>(new firstListener());
            return bean;
        }
    }
    
    1. 运行启动类 看控制台打印信息
      在这里插入图片描述

    Springboot访问静态资源(两种方式)

    第一种方式(通过ServletContext的根目录下寻找静态资源)

    1.在src/main 下创建一个webapp的目录(目录名称必须为webapp)
    在webapp下创建不同目录存放不同的静态资源,如:images 放图片 .
    在这里插入图片描述
    2. 运行启动类访问 直接访问资源路径
    在这里插入图片描述
    在这里插入图片描述

    第二种方式(从classpath/static的目录下寻找静态资源)

    在src/main/resources下创建一个static的目录(目录名称必须为static)
    在static下创建不同目录存放不同的静态资源,如:images 放图片 .
    在这里插入图片描述
    2. 运行启动类访问浏览器 直接访问资源路径
    在这里插入图片描述
    在这里插入图片描述

    以上就是本教程的相关内容,感谢观看,转载请注明出处

  • 相关阅读:
    pyCharm专业版下载以及永久破解2099年过期
    win10安装最新的python3解释器
    Ubuntu软件源更换
    Ubuntu安装软件命令
    Target runtime Apache Tomcat 6.0 is not defined
    ajaxFileUpload 报这错jQuery.handleError is not a function
    怎样编写高质量的Java代码
    java 内存监控工具 jstat jmap
    jquery中attr和prop的区别
    javax.mail.MessagingException: 501 Syntax: HELO hostname
  • 原文地址:https://www.cnblogs.com/joker-dj/p/12657528.html
Copyright © 2011-2022 走看看