三个注解都是servlet3.0定义的,在javax.servlet.annotation包下。
@WebListener 用于声明WebListener。 使用WebListener注释的任何类都必须实现javax.servlet.ServletContextListener , javax.servlet.ServletContextAttributeListener , javax.servlet.ServletRequestListener , javax.servlet.ServletRequestAttributeListener , javax.servlet.http.HttpSessionListener或javax.servlet.http.HttpSessionAttributeListener一个或多个。 javax.servlet.http.HttpSessionAttributeListener或javax.servlet.http.HttpSessionIdListener接口。
@WebFilter 用于声明servlet过滤器的注释。容器在部署时会处理此批注,并将相应的过滤器应用于指定的URL模式,servlet和调度程序类型。
@WebServlet 用于声明Servlet的注释。容器在部署时会处理此批注,并在指定的URL模式下提供相应的servlet
SpringMVC的 DispatcherServlet 也是一个Servlet,但不是使用@WebServlet注解形式注册的,而是ServletRegistrationBean形式。
@Configuration
@Conditional({DispatcherServletAutoConfiguration.DefaultDispatcherServletCondition.class})
@ConditionalOnClass({ServletRegistration.class})
protected static class DispatcherServletConfiguration {
@Bean(name = {"dispatcherServlet"})
public DispatcherServlet dispatcherServlet() {
return new DispatcherServlet();
}
@Bean(name = {"dispatcherServletRegistration"})
public ServletRegistrationBean dispatcherServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(this.dispatcherServlet(), new String[]{this.server.getServletMapping()});
registration.setName("dispatcherServlet");
if (this.multipartConfig != null) {
registration.setMultipartConfig(this.multipartConfig);
}
return registration;
}
}
本文介绍了Servlet 3.0中定义的三个核心注解:@WebListener、@WebFilter 和 @WebServlet 的作用及用法。此外还探讨了SpringMVC中的DispatcherServlet是如何通过ServletRegistrationBean而非@WebServlet进行配置的。
1077

被折叠的 条评论
为什么被折叠?



