SpringBoot 使用Servlet三大件(Servlet,Filter,Listener)

匿名 (未验证) 提交于 2019-12-03 00:41:02

那就跟以前一样在web.xml注册相应的servlet等信息即可

HelloServlet 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;  @WebServlet(name = "HelloServlet") public class HelloServlet extends HttpServlet {     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         doGet(request,response);     }     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         response.getWriter().print("Hello Servlet");     } } 
import javax.servlet.*; import java.io.IOException;  /**  * 配置Hello请求的过滤器  */ public class HelloFilter implements Filter {     @Override     public void init(FilterConfig filterConfig) throws ServletException {      }      @Override     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {         System.out.println("Hello Filter ...");         chain.doFilter(request,response);     }      @Override     public void destroy() {      } }
import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener;  /**  *  */ public class HelloListener implements ServletContextListener {     @Override     public void contextInitialized(ServletContextEvent sce) {         System.out.println("Hello Listener init ...");     }      @Override     public void contextDestroyed(ServletContextEvent sce) {         System.out.println("Hello Listener dead ...");     } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">     <display-name>demo</display-name>      <!--配置Servlet-->     <servlet>         <servlet-name>HelloServlet</servlet-name>         <servlet-class>com.fjut.springboot.servlet.HelloServlet</servlet-class>     </servlet>     <servlet-mapping>         <servlet-name>HelloServlet</servlet-name>         <url-pattern>/hello</url-pattern>     </servlet-mapping>      <!--配置过滤器-->     <filter>         <filter-name>HelloFilter</filter-name>         <filter-class>com.fjut.springboot.servlet.HelloFilter</filter-class>     </filter>     <filter-mapping>         <filter-name>HelloFilter</filter-name>         <url-pattern>/hello</url-pattern>     </filter-mapping>      <!--配置监听器-->     <listener>         <listener-class>com.fjut.springboot.servlet.HelloListener</listener-class>     </listener>      <welcome-file-list>         <welcome-file>index.html</welcome-file>         <welcome-file>index.htm</welcome-file>         <welcome-file>index.jsp</welcome-file>         <welcome-file>default.html</welcome-file>         <welcome-file>default.htm</welcome-file>         <welcome-file>default.jsp</welcome-file>     </welcome-file-list> </web-app>
... 2018-07-15 09:11:41.172  INFO 7504 --- [on(3)-127.0.0.1] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup 2018-07-15 09:11:41.172  INFO 7504 --- [on(3)-127.0.0.1] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'getDataSource' has been autodetected for JMX exposure 2018-07-15 09:11:41.181  INFO 7504 --- [on(3)-127.0.0.1] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'getDataSource': registering with JMX server as MBean [com.alibaba.druid.pool:name=getDataSource,type=DruidDataSource] 2018-07-15 09:11:41.198  INFO 7504 --- [on(3)-127.0.0.1] com.fjut.springboot.ServletInitializer   : Started ServletInitializer in 4.597 seconds (JVM running for 8.654) Hello Listener init ... [2018-07-15 09:11:41,235] Artifact spring-boot-06-jdbc:war exploded: Artifact is deployed successfully [2018-07-15 09:11:41,236] Artifact spring-boot-06-jdbc:war exploded: Deploy took 7,728 milliseconds 15-Jul-2018 09:11:42.463 信息 [http-nio-8080-exec-3] org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader A cookie header was received [1530005427,1530030667,1530059808; JSESSIONID=29BE6A814A0C05F2E3C9650B43DC8445] that contained an invalid cookie. That cookie will be ignored.Note: further occurrences of this error will be logged at DEBUG level. 15-Jul-2018 09:11:43.330 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [D:\Program Files\Tomcat 8.5\webapps\manager] 15-Jul-2018 09:11:43.376 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\Program Files\Tomcat 8.5\webapps\manager] has finished in [46] ms Hello Filter ... Hello Filter ... "D:\Program Files\Tomcat 8.5\bin\catalina.bat" stop Using CATALINA_BASE:   "C:\Users\LGX\.IntelliJIdea2018.1\system\tomcat\Unnamed_spring-boot-06-jdbc" Using CATALINA_HOME:   "D:\Program Files\Tomcat 8.5" Using CATALINA_TMPDIR: "D:\Program Files\Tomcat 8.5\temp" Using JRE_HOME:        "D:\Program Files\Java\jdk1.8.0_161" Using CLASSPATH:       "D:\Program Files\Tomcat 8.5\bin\bootstrap.jar;D:\Program Files\Tomcat 8.5\bin\tomcat-juli.jar" 15-Jul-2018 09:12:52.726 信息 [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance. 15-Jul-2018 09:12:52.726 信息 [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"] 15-Jul-2018 09:12:52.849 信息 [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"] 15-Jul-2018 09:12:52.966 信息 [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina] 2018-07-15 09:12:52.972  INFO 7504 --- [ost-startStop-2] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1461314: startup date [Sun Jul 15 09:11:37 CST 2018]; root of context hierarchy 2018-07-15 09:12:52.974  INFO 7504 --- [ost-startStop-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown 2018-07-15 09:12:52.974  INFO 7504 --- [ost-startStop-2] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans Hello Listener dead ... 15-Jul-2018 09:12:53.000 信息 [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"] 15-Jul-2018 09:12:53.001 信息 [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"] 15-Jul-2018 09:12:53.002 信息 [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"] 15-Jul-2018 09:12:53.003 信息 [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"] Disconnected from server

由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文
件。

由于没有配置文件Spring Boot使用ServletRegistrationBeanFilterRegistrationBeanServletListenerRegistrationBean分别用来注册ServletFilterListener

对应的servlet,filter,listener跟前文的三大件一样

import com.fjut.springboot.servlet.HelloFilter; import com.fjut.springboot.servlet.HelloListener; import com.fjut.springboot.servlet.HelloServlet; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  import java.util.Arrays;  @Configuration public class WebConfig {      /**      * 注册Servlet      * @return      */     @Bean     public ServletRegistrationBean<HelloServlet> helloServletServlet(){         ServletRegistrationBean<HelloServlet> helloServlet = new ServletRegistrationBean<>(new HelloServlet(),"/hello");         return helloServlet;     }      /**      * 注册Filter      * @return      */     @Bean     public FilterRegistrationBean<HelloFilter> helloFilter(){         FilterRegistrationBean<HelloFilter> helloFilter = new FilterRegistrationBean<>();         helloFilter.setFilter(new HelloFilter());         helloFilter.setUrlPatterns(Arrays.asList("/hello"));         return helloFilter;     }      /**      * 注册Listener      * @return      */     @Bean     public ServletListenerRegistrationBean<HelloListener> helloListener(){         ServletListenerRegistrationBean<HelloListener> helloListener = new ServletListenerRegistrationBean<>(new HelloListener());         return helloListener;     } }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!