Spring boot 配置Servelt、Filter、Listener
来源:互联网 发布:python openwrt 模拟 编辑:程序博客网 时间:2024/06/08 19:19
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中如何配置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
- spring boot-servlet、filter、listener
- servelt filter listener 的生命周期
- spring boot学习8之Servlet/Filter/Listener配置
- Spring Boot参考教程(六)Spring Boot配置Servlet,Filter,Listener,Interceptor
- spring boot第三节 Filter和Listener
- spring boot(18)-servlet、filter、listener
- spring boot(18)-servlet、filter、listener
- spring boot (二) servlet listener filter interceptor
- spring boot 配置Filter过滤器
- 18.玩转Spring Boot 注册Servlet、Filter、Listener
- spring-boot如何定义一个servlet,filter,listener
- Spring-Boot学习笔记(三) 编写Servlet、Filter、Listener、Interceptor
- 10.8、spring boot的web应用——servlet、listener、filter的应用
- springBoot配置servlet,filter,listener
- spring-boot使用Filter
- Spring配置Listener监听器
- servlet, spring, filter, listener加载顺序
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- vue favicon.ico正确显示
- Java RTTI和反射机制
- spring mvc restful 传入List
- PHP 数组
- Spring boot 配置Servelt、Filter、Listener
- 高精度计算——加法&&减法
- 剑指offer:数组中出现次数超过一半的数字
- 基于python实现的抓取腾讯视频所有电影的爬虫
- C# 组元Tuple
- springmvc中的转发和重定向
- UE4战争迷雾的制作
- network_setup.sh分析
- 习题 5.5 求s=a+aa+aaa+···aa···a之值,其中a是一个数字,n表示a的位数,n由键盘输入。