1. 使用注解注入
@ServletComponentScan(basePackages = "com.test.package")
指定原生 Servlet 组件所在位置,是下面三种注解生效的前提
@WebServlet(urlPatterns = "/myUrl")
效果类似于 @Controller + @RequestMapping,能够直接响应,但是不会被SpringMVC的拦截器拦截
@WebFilter(urlPatterns={"/css/","/images/"})
标注在过滤器上,定义过滤的内容
@WebListener
标注在监听器上
2. 使用RegistrationBean
就是将 Servlet 用对应的 RegistrationBean 包装一下,然后注入到容器中。ServletRegistrationBean, FilterRegistrationBean, ServletListenerRegistrationBean
@Configuration
public class MyRegistConfig {
@Bean
public ServletRegistrationBean myServlet(){
MyServlet myServlet = new MyServlet();
return new ServletRegistrationBean(myServlet,"/my","/my02");
}
@Bean
public FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
//return new FilterRegistrationBean(myFilter,myServlet());//这种方法,用于专门针对 myServlet 组件路径的
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
return filterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener(){
MySwervletContextListener mySwervletContextListener = new MySwervletContextListener();
return new ServletListenerRegistrationBean(mySwervletContextListener);
}
}
网友评论