SpringBoot中有两种方式可以添加 Servlet、Filter、Listener。

1.代码注册

 通过ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制。

    新建WebConfig 类,用于bean的注入,内容如下:

 1 package com.xsjt.config;
 2 
 3 import java.util.ArrayList;
 4 import java.util.EventListener;
 5 import java.util.List;
 6 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 7 import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
 8 import org.springframework.boot.web.servlet.ServletRegistrationBean;
 9 import org.springframework.context.annotation.Bean;
10 import org.springframework.context.annotation.Configuration;
11 import com.xsjt.filter.XbqFilter;
12 import com.xsjt.listener.XbqListener;
13 import com.xsjt.servlet.XbqServlet;
14 
15 /**  
16  * ClassName:WebConfig 
17  * 通过 @bean 注入 servlet、filter、listener
18  * Date:     2017年11月6日 下午6:10:30
19  * @author   Joe  
20  * @version    
21  * @since    JDK 1.8
22  */
23 @Configuration
24 public class WebConfig {
25 
26     /**
27      * servletRegistrationBean:(使用代码注册Servlet(不需要@ServletComponentScan注解)). 
28      * @author Joe
29      * Date:2017年11月6日下午6:13:29
30      *
31      * @return
32      */
33     @Bean
34     public ServletRegistrationBean servletRegistrationBean(){
35         ServletRegistrationBean registrationBean = new ServletRegistrationBean();
36         registrationBean.setServlet(new XbqServlet());
37         List<String> urlMappings = new ArrayList<String>();
38         // 访问,可以添加多个
39         urlMappings.add("/xbq/servlet");
40         registrationBean.setUrlMappings(urlMappings);
41         registrationBean.setLoadOnStartup(1);
42         return registrationBean;
43     }
44     
45     /**
46      * getDemoFilter:(使用代码注册拦截器).  
47      * @author Joe
48      * Date:2017年11月6日下午6:17:31
49      *
50      * @return
51      */
52     @Bean
53     public FilterRegistrationBean getDemoFilter(){
54         XbqFilter demoFilter = new XbqFilter();
55         FilterRegistrationBean registrationBean=new FilterRegistrationBean();
56         registrationBean.setFilter(demoFilter);
57         List<String> urlPatterns=new ArrayList<String>();
58         urlPatterns.add("/*");                            //拦截路径,可以添加多个
59         registrationBean.setUrlPatterns(urlPatterns);
60         registrationBean.setOrder(1);
61         return registrationBean;
62     }
63     
64     /**
65      * getDemoListener:(使用代码 引用 监听器).  
66      * @author Joe
67      * Date:2017年11月6日下午6:35:28
68      *
69      * @return
70      */
71     @Bean
72     public ServletListenerRegistrationBean<EventListener> getDemoListener(){
73         ServletListenerRegistrationBean<EventListener> registrationBean = new ServletListenerRegistrationBean<>();
74         registrationBean.setListener(new XbqListener());
75         registrationBean.setOrder(1);
76         return registrationBean;
77     }
78 }

  其中,代码中 XbqServlet 、XbqFilter、XbqListener 代码如下:

 1 package com.xsjt.servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import javax.servlet.ServletException;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 /**  
11  * ClassName:XbqServlet 
12  * 通过 代码注册Servlet 
13  * Date:     2017年11月6日 下午5:13:10
14  * @author   Joe  
15  * @version    
16  * @since    JDK 1.8
17  */
18 public class XbqServlet extends HttpServlet{
19 
20     private static final long serialVersionUID = 1L;
21 
22     @Override
23     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
24         this.doPost(req, resp);
25     }
26 
27     @Override
28     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
29         resp.setCharacterEncoding("UTF-8");
30         resp.setContentType("text/html");  
31         PrintWriter out = resp.getWriter();  
32         out.println("<html>");  
33         out.println("<head>");  
34         out.println("<title>Hello World</title>");  
35         out.println("</head>");  
36         out.println("<body><center>");  
37         out.println("<h3>我是通过代码注册Servlet</h3>");  
38         out.println("</center></body>");  
39         out.println("</html>"); 
40     }
41 }
View Code

相关文章:

  • 2021-05-09
  • 2021-11-27
  • 2021-09-16
  • 2022-02-16
  • 2021-07-23
  • 2021-08-12
  • 2021-10-19
  • 2021-05-27
猜你喜欢
  • 2021-09-01
  • 2021-11-12
  • 2021-06-30
  • 2021-11-22
  • 2021-05-18
  • 2021-12-03
  • 2022-12-23
相关资源
相似解决方案