zoukankan      html  css  js  c++  java
  • 2、SpringBoot整合Web层技术

    整合Servlet方式一(通过注解扫描完成Servlet组件的注册)

    1.创建Serverlet
    2.修改启动类,添加 @ServletComponentScan

    添加web依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.3.1.RELEASE</version>
    </dependency>
    

    1.创建Serverlet

    @WebServlet(name="FirstServlet", urlPatterns = "/first")
    public class FirstServlet extends HttpServlet{
        public void doGet(HttpServletRequest request, HttpServletResponse response){
            System.out.println("First Servlet...");
        }
    }
    

    2.修改启动类,添加 @ServletComponentScan

    @SpringBootApplication
    @ServletComponentScan//在SpringBoot启动时会扫描@WebServlet,对该类进行实例化
    public class SpringbootwebApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(SpringbootwebApplication.class, args);
       }
    }
    

    通过:localhost:8080/first 访问

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

    1.创建Serverlet继承HttpServlet
    2.创建Servlet配置类

    1.创建Serverlet

    public class SecondServlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response){
            System.out.println("Second Servlet...");
        }
    }
    

    2.创建Servlet配置类

    @Configuration
    public class ServletConfig {
    //    完成Servlet组件的注册
        @Bean
        public ServletRegistrationBean getServletRegistrationBean(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
    //添加该Servlet的访问路径
            bean.addUrlMappings("/second");
            return bean;
        }
    }
    

    启动类

    @SpringBootApplication
    public class SpringbootwebApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(SpringbootwebApplication.class, args);
       }
    }
    

    添加@Configuration相当于这个类是一个spring配置文件上下文,添加@Bean的这个方法会在spring容器启动的时候进行实例化

    通过url:localhost:8080/second 访问

    整合Filter方式一(通过注解扫描完成Filter组件注册)

    1.创建Filter
    2.修改启动类,添加@ServletComponentScan注解

    1.创建Filter

    //@WebFilter(filterName = "FirstFilter",urlPatterns = {"*.do","*.jsp"})
    @WebFilter(filterName = "FirstFilter", urlPatterns = "/first")
    public class FirstFilter implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
        @Override
        public void destroy() {
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("进入First Filter");
            filterChain.doFilter(servletRequest, servletResponse);
            System.out.println("离开First Filter");
        }
    }
    

    2.修改启动类,添加@ServletComponentScan注解

    @SpringBootApplication
    @ServletComponentScan
    public class SpringbootwebApplication {
    
    
       public static void main(String[] args) {
          SpringApplication.run(SpringbootwebApplication.class, args);
       }
    }
    

    因为Filter本身属于Servlet的一个子技术,所以通过@ServletComponentScan也可以扫描到@WebFilter的类

    通过url:localhost:8080/first 访问

    整合Filter方式二(通过方法完成Filter组件注册)

    1.创建Filter实现Filter
    2.创建Filter配置类

    1.创建Filter

    public class SecondFilter implements Filter{
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
        @Override
        public void destroy() {
        }
    
        @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");
        }
    }
    

    创建Filter配置类

    @Configuration
    public class FilterConfig {
        @Bean
        public FilterRegistrationBean getFilterRegistrationBean(){
            FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
    //        bean.addUrlPatterns(new String[]{"*.do","*.jsp"});
            bean.addUrlPatterns("/second");
            return bean;
        }
    }
    

    通过 url:localhost:8080/second

    整合Listener方式一(通过注解扫描完成Listener组件注册)

    1.编写Listener实现ServletContextListener
    2.修改启动类添加@ServletComponentScan

    1.编写Listener

    @WebListener
    public class FirstListener implements ServletContextListener{
        //监听销毁的方法
        public void contextDestroyed(ServletContextEvent event){
    
        }
    
        // 监听初始化的方法
        public void contextInitialized(ServletContextEvent event){
            System.out.println("Listener....Init.....");
        }
    }
    

    2.修改启动类添加@ServletComponentScan

    @SpringBootApplication
    @ServletComponentScan
    public class SpringbootwebApplication {
       public static void main(String[] args) {
          SpringApplication.run(SpringbootwebApplication.class, args);
       }
    }
    

    整合Listener方式二(通过方法完成Listener组件注册)

    1.编写Listener
    2.创建Listenter启动类

    1.编写Listener

    public class SecondListener implements ServletContextListener {
        //监听销毁的方法
        public void contextDestroyed(ServletContextEvent event){
        }
    
    
        // 监听初始化的方法
        public void contextInitialized(ServletContextEvent event){
            System.out.println("SecondListener....Init.....");
        }
    }
    

    2.创建Listenter启动类

    @Configuration
    public class ListenerConfig {
        @Bean
        public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
            ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
            return bean;
        }
    }
    
  • 相关阅读:
    C#多线程之Parallel中 类似于for的continue,break的方法
    C#中静态类、静态方法和静态变量的简单说明
    C# 类属性封装、字段的详解
    BackgroundWorker 后台进程控制窗体label、richtextbook内容刷新
    asp.net 实现 tts
    System.Speech.Synthesis 添加暂停、继续功能
    微软TTS,Neospeech TTS 简单使用
    VS2015如何批量统改相同变量名
    VS2015时显示无法启动此程序 因为计算机中丢失ucrtbased.dll
    Windows环境下MinGW/gcc安装和环境配置
  • 原文地址:https://www.cnblogs.com/Ryuichi/p/13445493.html
Copyright © 2011-2022 走看看