ServletRegistrationBean与ServletListenerRegistrationBean与FilterRegistrationBean

servlet

在app里面加入@ServletComponentScan

一种为

@WebServlet(value = {"/hello"})
@Slf4j
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                 response.setContentType("text/html;charser=uts-8");
        PrintWriter writer = response.getWriter();
        writer.print("nihao");
        log.info("hhhhhh");
    }
}

使用ServletRegistrationBean可以不用写

@WebServlet(value = {"/hello"})@ServletComponentScan

@Configuration
public class Myconfig {
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean servletRegistrationBean=new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new HelloServlet());
        servletRegistrationBean.addUrlMappings("/hello");
        return servletRegistrationBean;
    }

监听器

在app里面加入@ServletComponentScan

@WebListener
@Slf4j
public class ServletListener implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        log.info("有人");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        log.info("没人");
    }
}

使用ServletListenerRegistrationBean可以不用写@WebListener@ServletComponentScan

  @Bean
    public ServletListenerRegistrationBean servletListenerRegistrationBean(){
        ServletListenerRegistrationBean servletListenerRegistrationBean=new ServletListenerRegistrationBean();
        servletListenerRegistrationBean.setListener(new ServletListener());
        servletListenerRegistrationBean.setEnabled(true);
        return servletListenerRegistrationBean;
    }

Filter

依赖

 <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
            <version>2.0.0</version>
        </dependency>
@Slf4j
@WebFilter("/api/*")
public class TokenFilter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=  (HttpServletRequest)servletRequest;
        HttpServletResponse response=  (HttpServletResponse)servletResponse;
        String token = request.getParameter("token");
        log.info("-------TokenFilter1开始------");
        //log.info("获取到token->{}",token);
        if(StrUtil.isEmpty(token)){
            response.sendRedirect("/logout");
            return;
        }
        StopWatch sw = new StopWatch();
        sw.start();
        filterChain.doFilter(servletRequest,servletResponse);
        sw.stop();
        log.info("-------TokenFilter1结束,耗时:{}------",sw.getTotalTimeSeconds());
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean filter = new FilterRegistrationBean();
        filter.setFilter(new TokenFilter1());
        filter.addUrlPatterns("/api/*");
        filter.setName("filter1");
        filter.setOrder(2);
        return filter;
    }
    @Bean
    public FilterRegistrationBean logfilterRegistrationBean(){
        FilterRegistrationBean filter = new FilterRegistrationBean();
        filter.setFilter(new LogFilter2());
        filter.addUrlPatterns("/api/*");
        filter.setName("filter2");
        filter.setOrder(1);
        return filter;
    }

logout为

package com.beiyou.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogOut {

    @GetMapping("/logout")
    public String logout(){

        return "滚出去";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值