013-spring Boot Web "Two" static resources, Servlet, Filter, Listenter

Source: Internet
Author: User
Tags stub

First, static resources 1.1, webapp default support static resources

Establish user.html default support access under Src/main/webapp

1.2, the default built-in static resource directory. can be accessed directly

View Package: Spring-boot-autoconfigure-1.5.9.release.jar under: org.springframework.boot.autoconfigure.web;

View: ResourceProperties, where

    Private Static Final string[] Classpath_resource_locations = {            "classpath:/meta-inf/resources/", "classpath:/resources/" ,            " classpath:/static/"," classpath:/public/"};

By default, the above four directories can be accessed.

You can modify the configuration item in the Application.properties under Src/main/resources

spring.resources.staticlocations=classpath:/html/
Second, spring boot uses the servlet "original" since servlet3.x annotation function 2.1, using servlet

Create a new Userservlet.java

 PackageCom.lhx.spring.springboot_web_ext;Importjava.io.IOException;Importjavax.servlet.ServletException;ImportJavax.servlet.annotation.WebServlet;ImportJavax.servlet.http.HttpServlet;Importjavax.servlet.http.HttpServletRequest;Importjavax.servlet.http.HttpServletResponse; @WebServlet ("/user.do") Public classUserservletextendsHttpServlet {Private Static Final LongSerialversionuid = 1L; @Overrideprotected voidDoget (httpservletrequest req, HttpServletResponse resp)throwsservletexception, IOException {resp.getwriter (). Print ("User Servlet"); }}
View Code

and add the servlet scan annotations on the startup class: Servletcomponentscan

@ServletComponentScan @springbootapplication  Public class App {    publicstaticvoid  main (string[] args) {        = Springapplication.run (App.class, args);         // context.close ();     }}
View Code

Access can

2.2. Use Filter

Create a new Logfilter.java intercept user.do

 PackageCom.lhx.spring.springboot_web_ext;Importjava.io.IOException;ImportJavax.servlet.Filter;ImportJavax.servlet.FilterChain;ImportJavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse;Importjavax.servlet.annotation.WebFilter; @WebFilter ("/user.do") Public classLogfilterImplementsFilter {@Override Public voiddestroy () {//TODO auto-generated Method Stub} @Override Public voidDoFilter (ServletRequest arg0, Servletresponse arg1, Filterchain arg2)throwsIOException, servletexception {System.out.println ("Income log Filter" +arg0.getremotehost ());    Arg2.dofilter (arg0, arg1); } @Override Public voidInit (Filterconfig arg0)throwsservletexception {//TODO auto-generated Method Stub    }}
View Code

You can run it now

2.3. Using listener
 PackageCom.lhx.spring.springboot_web_ext;Importjava.time.LocalDate;Importjavax.servlet.ServletContextEvent;ImportJavax.servlet.ServletContextListener;ImportJavax.servlet.annotation.WebListener; @WebListener Public classMycontextlistenerImplementsServletcontextlistener {@Override Public voidcontextdestroyed (servletcontextevent arg0) {//TODO auto-generated Method Stub} @Override Public voidcontextinitialized (servletcontextevent arg0) {System.out.println ("App startup at" +Localdate.now (). toString ()); }}
View Code

You can run it now

Third, spring boot using the servlet "configuration" does not rely on Servlet3.0, using servlet2.x can use 3.1, using the servlet

Add Bookservlet.java, note no annotations

 PackageCom.lhx.spring.springboot_web_ext.servlet;Importjava.io.IOException;Importjavax.servlet.ServletException;ImportJavax.servlet.http.HttpServlet;Importjavax.servlet.http.HttpServletRequest;ImportJavax.servlet.http.HttpServletResponse; Public classBookservletextendsHttpServlet {Private Static Final LongSerialversionuid = 1L; @Overrideprotected voidDoget (httpservletrequest req, HttpServletResponse resp)throwsservletexception, IOException {System.out.println ("Test"); }}
View Code

Add Configuration class, Servletconfiguration.java

 PackageCom.lhx.spring.springboot_web_ext.servlet;Importorg.springframework.boot.SpringBootConfiguration;ImportOrg.springframework.boot.web.servlet.ServletRegistrationBean;ImportOrg.springframework.context.annotation.Bean; @SpringBootConfiguration Public classservletcongfiguration {@Bean PublicServletregistrationbean Createbookservlet () {Servletregistrationbean servlet=NewServletregistrationbean (NewBookservlet (), "Book.do"); returnservlet; }}
View Code

You can access it now.

3.2. Use filter

Increase Echofilter.java

 PackageCom.lhx.spring.springboot_web_ext.servlet;Importjava.io.IOException;ImportJavax.servlet.Filter;ImportJavax.servlet.FilterChain;ImportJavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse;Importjavax.servlet.http.HttpServletRequest; Public classEchofilterImplementsFilter {@Override Public voiddestroy () {//TODO auto-generated Method Stub} @Override Public voidDoFilter (ServletRequest arg0, Servletresponse arg1, Filterchain arg2)throwsIOException, servletexception {httpservletrequest req=(httpservletrequest) arg0; System.out.println ("Test" +Req.getrequesturi ());    Arg2.dofilter (arg0, arg1); } @Override Public voidInit (Filterconfig arg0)throwsservletexception {//TODO auto-generated Method Stub    }}
View Code

In the configuration class, Servletconfiguration.java adds

    @Bean    public  Filterregistrationbean Createfilterregistrationbean () {          New  Filterregistrationbean ();        Filter.setfilter (new  echofilter ());        Filter.seturlpatterns (Arrays.aslist ("/book.do"));         return filter;    }
View Code3.3. Using Listner

Add Startuplistener. java

 PackageCom.lhx.spring.springboot_web_ext.servlet;Importjavax.servlet.ServletContextEvent;ImportJavax.servlet.ServletContextListener; Public classStartuplistenerImplementsServletcontextlistener {@Override Public voidcontextdestroyed (servletcontextevent arg0) {//TODO auto-generated Method Stub} @Override Public voidcontextinitialized (servletcontextevent arg0) {System.out.println ("================="); }}
View Code

In the configuration class, Servletconfiguration.java adds

    @Bean    public servletlistenerregistrationbean<startuplistener>  Createservletlistenerregistrationbean () {        ServletlistenerregistrationbeanNew Servletlistenerregistrationbean<startuplistener> (new  Startuplistener ());         return Registrationbean;    }
View Code

Note: Generally use 2 for annotations, because spring boot is based on Spring 4.x, Spring 4.x developed web generally uses servlet3.x above

013-spring Boot Web "Two" static resources, Servlet, Filter, Listenter

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.