三个注解都是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;
}
}
版权声明:本文为qq_27579471原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。