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