【SpringMVC】Servlet的原生注解@WebListener、@WebFilter、@WebServlet

三个注解都是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版权协议,转载请附上原文出处链接和本声明。