springboot使用原生servlet,filter,listener
servlet
@Slf4j
@WebServlet(urlPatterns = {"/myServlet"})
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("myServlet调用了");
}
}
filter
@Slf4j
@WebFilter(urlPatterns = {"/myServlet"})
public class myFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("myFilter初始化");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info("myFilter拦截");
filterChain.doFilter(servletRequest,servletResponse);
}
}
listener
@Slf4j
@WebListener
public class myServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
log.info("myServletContextListener初始化");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
log.info("myServletContextListener销毁");
}
}
如果单单这样学,原生servlet是不起作用的,必须在springboot启动接口中开启组件扫描ServletComponentScan
@SpringBootApplication
@ServletComponentScan(basePackages = {"com.godofball.boot"})
public class MainApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
}
}
或者使用springboot提供的类ServletRegistrationBean
, FilterRegistrationBean
, ServletListenerRegistrationBean
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Bean
ServletRegistrationBean myServlet(){
MyServlet myServlet = new MyServlet();
return new ServletRegistrationBean(myServlet,"/myServlet");
}
@Bean
FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(myFilter);
filterRegistrationBean.setServletRegistrationBeans(Arrays.asList(myServlet()));
return filterRegistrationBean;
}
@Bean
ServletListenerRegistrationBean myServletContextListener(){
MyServletContextListener myServletContextListener = new MyServletContextListener();
return new ServletListenerRegistrationBean(myServletContextListener);
}
}
var code = "44c05181-3b7c-4cf6-8556-1cd8422e9527"