自定义Springboot三大组件:servlet,filter,listener
一、先自定义出MyServlet、MyFilter、MyListener
1、自定义servlet:
/**
* 自定义servlet
*/
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("myServlet");
writer.flush();
writer.close();
System.out.println("myServlet2222");
}
}
2、自定义filter:
/**
* 自定义过滤器
*/
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("前置过滤");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("后置过滤");
}
@Override
public void destroy() {
}
}
3、自定义listener:
/**
* 自定义监听器
*/
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("创建了监听器");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("销毁了监听器");
}
}
二、将自定义的三大组件注册到配置类中
@Configuration
public class MyConfig implements WebMvcConfigurer {
/*注册自定义servlet*/
@Bean
public MyServlet myServlet(){
return new MyServlet();
}
@Bean
public ServletRegistrationBean<MyServlet> myServletServletRegistrationBean(MyServlet myServlet){
ServletRegistrationBean<MyServlet> servletServletRegistrationBean = new ServletRegistrationBean<>();
servletServletRegistrationBean.setServlet(myServlet);
servletServletRegistrationBean.setUrlMappings(Arrays.asList("/user1","/user2"));
return servletServletRegistrationBean;
}
/*注册自定义过滤器*/
@Bean
public MyFilter myFilter(){
return new MyFilter();
}
@Bean
public FilterRegistrationBean<MyFilter> myFilterFilterRegistrationBean(MyFilter myFilter){
FilterRegistrationBean<MyFilter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
filterFilterRegistrationBean.setFilter(myFilter);
filterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
return filterFilterRegistrationBean;
}
/*注册自定义监听器*/
@Bean
public MyListener myListener(){
return new MyListener();
}
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(MyListener myListener){
ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>();
servletListenerRegistrationBean.setListener(myListener);
return servletListenerRegistrationBean;
}
}