servlet3.1 来提供了以下注解(在此之前,我们都是在web.xml配置的)
这个注解我们前面说过一个类是 ServletContainerInitializer ,这个注解用在这个初始化启动类上,这个注解主要提供注入类到我们set<Class<?>>set 中,这在我们在启动类中可以拿到,比如
@HandlesTypes(MyServlet.class) //这样我们只能拿到MyServlet类 public class TestServletContainerInitializer implements ServletContainerInitializer{ public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException { System.out.println("====================="); } }
ServletSecurity这个注解是提供访问安全控制的,而HttpConstraint、HttpMethodConstraint配合这个安全注解使用的,也就是这个注解的属性,HttpConstraint提供了请求权限,而HttpMethonConstrain提供了方法访问控制
@WebServlet(urlPatterns = "/methodTest") //@ServletSecurity(value = @HttpConstraint(transportGuarantee = ServletSecurity.TransportGuarantee.CONFIDENTIAL)) @ServletSecurity(httpMethodConstraints = @HttpMethodConstraint(value = "POST",emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.DENY)) public class methodTest extends HttpServlet { public void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException { System.out.println("annotation ............."+servletRequest.getMethod()); } }
servlet提供一些注解在servlet注解,不需要在web.xml配置,比如WebFilter、WebServlet,项目会自动在classpath扫描这写注解,比如我们上面那个列子
这个注解主要是配合上面两个注解使用,是注入我们初始化参数用的,比如
@WebFilter(urlPatterns = "/methodTest",initParams=@WebInitParam (name = "key",value = "value")) public class TestFilter implements Filter { private FilterConfig filterConfig; public FilterConfig getFilterConfig() { return filterConfig; } public void setFilterConfig(FilterConfig filterConfig) { this.filterConfig = filterConfig; } public void init(FilterConfig filterConfig) throws ServletException { setFilterConfig(filterConfig); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { FilterConfig filterConfig = this.getFilterConfig(); System.out.println("================================"+filterConfig.getInitParameterNames()); } public void destroy() { } }
webListener同样提供了我们使用主机的方式注入监听器,比如我们实现session监听器就可以如下
@WebListener public class WebListerTest implements HttpSessionListener { public void sessionCreated(HttpSessionEvent httpSessionEvent) { } public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { } }