Spring boot 配置Servelt、Filter、Listener
2017-08-08 13:08
627 查看
Spring Boot集成了servlet容器,当我们在pom文件中增加spring- boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spring boot 自动配置的功能(因为加了EnableAutoConfiguration的注解),帮我们创建了一堆默认的配置,以前在web.xml中配置,现在都可 以通过spring bean的方式进行配置,由spring来进行生命周期的管理,大多数情况下,我们需要重载这些配置(例如修改服务的启动端
口,contextpath,filter,listener,servlet,session超时时间等)
本节讲解在SpringBoot中如何配置
DemoServelt.java
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 2600143224322327782L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("==>DemoServlet接受请求");
resp.getWriter().write("DemoServlet access success");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
}
DemoFilter.java
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class DemoFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("==>DemoFilter启动");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("==>DemoFilter拦截请求");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
DemoListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class DemoListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("==>DemoListener启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
在准备好这些文件之后,我们开始配置。SpringBoot提供了2种方式配置Servlet、Listener、Filter。一种是基于RegistrationBean,另一种是基于注解。
1、基于RegistrationBean的配置
spring boot提供了
编写配置类WebConfig.java
import java.util.ArrayList;
import java.util.EventListener;
import java.util.List;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletListenerRegistrationBean;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.tianshouzhi.springbootstudy.web.filter.DemoFilter;
import com.tianshouzhi.springbootstudy.web.listener.DemoListener;
import com.tianshouzhi.springbootstudy.web.servlet.DemoServlet;
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public FilterRegistrationBean getDemoFilter(){
DemoFilter demoFilter=new DemoFilter();
FilterRegistrationBean registrationBean=new FilterRegistrationBean();
registrationBean.setFilter(demoFilter);
List<String> urlPatterns=new ArrayList<String>();
urlPatterns.add("/*");//拦截路径,可以添加多个
registrationBean.setUrlPatterns(urlPatterns);
registrationBean.setOrder(1);
return registrationBean;
}
@Bean
public ServletRegistrationBean getDemoServlet(){
DemoServlet demoServlet=new DemoServlet();
ServletRegistrationBean registrationBean=new ServletRegistrationBean();
registrationBean.setServlet(demoServlet);
List<String> urlMappings=new ArrayList<String>();
urlMappings.add("/demoservlet");////访问,可以添加多个
registrationBean.setUrlMappings(urlMappings);
registrationBean.setLoadOnStartup(1);
return registrationBean;
}
@Bean
public ServletListenerRegistrationBean<EventListener> getDemoListener(){
ServletListenerRegistrationBean<EventListener> registrationBean
=new ServletListenerRegistrationBean<>();
registrationBean.setListener(new DemoListener());
// registrationBean.setOrder(1);
return registrationBean;
}
}
这个类编写好,就相当于已经完成了配置。
运行Application.java,控制台输出:
可以看到Listener和Filter在应用启动的时候,都初始化了。
在浏览器中访问servlet:http://localhost:8080/demoservlet
可以看到servlet可以接受到请求并响应。而在控制台中,我们还可以看到
说明对于servlet的请求,Filter是可以进行成功拦截的。
2、基于注解的配置
口,contextpath,filter,listener,servlet,session超时时间等)
本节讲解在SpringBoot中如何配置
Servelt、
Filter、
Listener。大家可能已经注意到,在SpringBoot中,不光将Spring的配置文件省略了,连web容器的
web.xml文件都省略了,而之前,我们通常都是将Servelt、Filter、Listener等配置在web.xml中配置的,而SpringBoot提供了更加简化的配置。在讲解如何配置之前,我们先将演示用Servelt、Filter、Listener的准备好。
DemoServelt.java
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DemoServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 2600143224322327782L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("==>DemoServlet接受请求");
resp.getWriter().write("DemoServlet access success");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
}
DemoFilter.java
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class DemoFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("==>DemoFilter启动");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("==>DemoFilter拦截请求");
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
DemoListener.java
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class DemoListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("==>DemoListener启动");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
在准备好这些文件之后,我们开始配置。SpringBoot提供了2种方式配置Servlet、Listener、Filter。一种是基于RegistrationBean,另一种是基于注解。
1、基于RegistrationBean的配置
spring boot提供了
ServletRegistrationBean,
FilterRegistrationBean,
ServletListenerRegistrationBean这3个东西来进行配置Servlet、Filter、Listener
编写配置类WebConfig.java
import java.util.ArrayList;
import java.util.EventListener;
import java.util.List;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletListenerRegistrationBean;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.tianshouzhi.springbootstudy.web.filter.DemoFilter;
import com.tianshouzhi.springbootstudy.web.listener.DemoListener;
import com.tianshouzhi.springbootstudy.web.servlet.DemoServlet;
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter{
@Bean
public FilterRegistrationBean getDemoFilter(){
DemoFilter demoFilter=new DemoFilter();
FilterRegistrationBean registrationBean=new FilterRegistrationBean();
registrationBean.setFilter(demoFilter);
List<String> urlPatterns=new ArrayList<String>();
urlPatterns.add("/*");//拦截路径,可以添加多个
registrationBean.setUrlPatterns(urlPatterns);
registrationBean.setOrder(1);
return registrationBean;
}
@Bean
public ServletRegistrationBean getDemoServlet(){
DemoServlet demoServlet=new DemoServlet();
ServletRegistrationBean registrationBean=new ServletRegistrationBean();
registrationBean.setServlet(demoServlet);
List<String> urlMappings=new ArrayList<String>();
urlMappings.add("/demoservlet");////访问,可以添加多个
registrationBean.setUrlMappings(urlMappings);
registrationBean.setLoadOnStartup(1);
return registrationBean;
}
@Bean
public ServletListenerRegistrationBean<EventListener> getDemoListener(){
ServletListenerRegistrationBean<EventListener> registrationBean
=new ServletListenerRegistrationBean<>();
registrationBean.setListener(new DemoListener());
// registrationBean.setOrder(1);
return registrationBean;
}
}
这个类编写好,就相当于已经完成了配置。
运行Application.java,控制台输出:
可以看到Listener和Filter在应用启动的时候,都初始化了。
在浏览器中访问servlet:http://localhost:8080/demoservlet
可以看到servlet可以接受到请求并响应。而在控制台中,我们还可以看到
说明对于servlet的请求,Filter是可以进行成功拦截的。
2、基于注解的配置
相关文章推荐
- Spring boot 配置Servelt、Filter、Listener
- SpringBoot初始教程之Servlet、Filter、Listener配置
- SpringBoot初始教程之Servlet、Filter、Listener配置
- SpringBoot初始教程之Servlet、Filter、Listener配置(七)
- SpringBoot之Servlet、Filter、Listener配置
- SpringBoot系列<八>过滤器filter和监听器listener配置
- SpringBoot初始教程之Servlet、Filter、Listener配置(七)
- SpringBoot 配置 Servlet、Filter、Listener
- Spring Boot参考教程(六)Spring Boot配置Servlet,Filter,Listener,Interceptor
- 【spring】SpringBoot之Servlet、Filter、Listener配置
- SpringBoot学习教程 - 03 - 配置Servlet、Filter、Listener
- SpringBoot初始教程之Servlet、Filter、Listener配置详解
- Spring Boot 之Servlet、Listener、Filter
- SpringBoot项目实战(7):Filter、Listener
- spring boot(18)-servlet、filter、listener
- Spring-boot中配置拦截器(Filter)
- spring-boot-started-logging logback常用配置之<filter>标签详解
- spring boot (二) servlet listener filter interceptor
- spring boot(18)-servlet、filter、listener
- springboot系列教程(九)——Servlet、Filter、Listener