Web原生组件注入(Servlet、Filter、Listener)
Servlet原生组件
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("servlet响应");
}
}
在主启动类添加servlet扫描包路径:
@ServletComponentScan(basePackages = "com.chz.aaademo") //添加servlet扫描包路径
@SpringBootApplication
public class AaademoApplication {
public static void main(String[] args) {
SpringApplication.run(AaademoApplication.class, args);
}
}
servlet组件会跳过拦截器,直接进行响应。
Filter原生组件
@WebFilter(urlPatterns = "/css/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化过滤器");
}
@Override
public void destroy() {
System.out.println("过滤器销毁");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤器工作");
filterChain.doFilter(servletRequest,servletResponse);
}
}
Listener原生组件
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContextListener初始化");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContextListener销毁");
}
}
使用RegistrationBean
@Configuration(proxyBeanMethods = true) //默认为true,保证是单实例
public class MyRegisterConfig {
@Bean
public ServletRegistrationBean myServlet(){
MyServlet myServlet = new MyServlet();
return new ServletRegistrationBean(myServlet,"/my");
}
@Bean
public FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
// return new FilterRegistrationBean(myFilter,MyServlet());
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
return filterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener(){
ServletContextListener servletContextListener = new MyListener();
return new ServletListenerRegistrationBean(servletContextListener);
}
}
浙公网安备 33010602011771号