SpringBoot学习5 - 注册使用原生Web的组件Servlet、Filter、Listener


步骤

  1. 定义一个Servelt、Filter、Listener
  2. 定义一个配置类@Configuration,@Bean 交给容器管理

1. 注册使用Servlet


MyServlet

public class LoginServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.service(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("这个一个登录的servelt");
    }
}


MyConfigurer

@Configuration
public class MyConfigurer  implements WebMvcConfigurer {    
    
    @Bean
    public ServletRegistrationBean<TestServlet> registerLoginServlet() {
        // 一个Servelt封装类 - 封装请求模式、以及具体Servelt
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new LoginServlet());
        
        // 可设置多个请求模式匹配这个Servelt
        servletRegistrationBean.setUrlMappings(Arrays.asList("/login"));
        
        return servletRegistrationBean;

    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mo2AzFxx-1587872020830)(en-resource://database/26882:1)]


2. 注册使用Filter

EncodingFilter.java - 统一编码过滤器

public class EncodingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) response;

        resp.setContentType("text/html;charset=utf-8");

        chain.doFilter(request, response);
    }
}

MyConfigurer.java

@Configuration
public class MyConfigurer  implements WebMvcConfigurer {        
    @Bean
    public FilterRegistrationBean registerEncodingFilter() {
        
        // 封装成 请求过滤的模式、以及过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new EncodingFilter());
        
        // 所有请求模式,都要经过这个过滤器
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        return filterRegistrationBean;
    }
}


3. 注册使用Listener

public class MyServletContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

        System.out.println("Web项目启动中");

    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Web项目关闭中");
    }
}

@Configuration
public class MyConfigurer  implements WebMvcConfigurer {          
    @Bean
    public ServletListenerRegistrationBean<ServletContextListener> registerServletContextListener() {
        ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();
        servletListenerRegistrationBean.setListener(new MyServletContextListener());

        return servletListenerRegistrationBean;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值