使用Servlet API
1 @WebServlet + @ServletComponentScan1
2 @WebFilter + @ServletComponentScan1
3 @WebListener + @ServletComponentScan1
使用RegistrationBean 替代 原生Servlet API
- ServletRegistrationBean
- FilterRegistrationBean
- ServletListenerRegistrationBean**
=================================================
1 @WebServlet + @ServletComponentScan
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("66666");
}
}
2 @WebFilter + @ServletComponentScan
//优先级: 监听器 > filter > 自定义servlet > dispatchServlet(SpringMVC)
@Slf4j
@WebFilter(urlPatterns={"/css/*","/images/*"}) //my
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("MyFilter初始化完成");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
log.info("MyFilter工作");
chain.doFilter(request,response);
}
@Override
public void destroy() {
log.info("MyFilter销毁");
}
}
3 @WebListener + @ServletComponentScan
@Slf4j
@WebListener
public class MySwervletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
log.info("MySwervletContextListener监听到项目初始化完成");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
log.info("MySwervletContextListener监听到项目销毁");
}
}
使用RegistrationBean 替代 原生Servlet API
①、ServletRegistrationBean ②、FilterRegistrationBean ③、ServletListenerRegistrationBean
@Configuration
public class MyRegistorConfig {
@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()); 拦截servlet的路径
FilterRegistrationBean<MyFilter> myFilterFilterRegistrationBean = new FilterRegistrationBean<>(myFilter);
myFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
return myFilterFilterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean myListner(){
MyServletContextListener myServletContextListener = new MyServletContextListener();
return new ServletListenerRegistrationBean(myServletContextListener);
}
}
===================================================================================================================
原来写的三个Servlet API 的类 的注解 @WebFilter @WebListener @Servlet 可以不用写,而是用xxxRegistrationBean来替代。
.
.
.