servlet3.1规范翻译:第8章 注解和可插拔性
第8章 注解和可插拔性
本章讨论在web应用中使用的Servlet 3.0规范定义的注解和启用框架和库的可插拔性增强。
8.1 注解和可插拔性在web应用中,使用注解的类仅当它们位于WEB-INF/classes目录中,或它们被打包到位于应用的WEB-INF/lib中的jar文件中时它们的注解才将被处理。
Web应用部署描述符的web-app元素包含一个新的“metadata-complete”属性。“metadata-complete”属性定义了web描述符是否是完整的,或是否应该在部署时检查jar包中的类文件和web fragments。如果“metadata-complete”设置为“true”,部署工具必须忽略存在于应用的类文件中的所有servlet注解和web fragments。如果metadata-complete属性没有指定或设置为“false”,部署工具必须检查应用的类文件的注解,并扫描web fragments。
兼容Servlet3.0的web容器必须支持下面的注解。
8.1.1 @WebServlet该注解用于在Web应用中定义Servlet组件。该注解在一个类上指定并包含关于声明的Servlet的元数据。必须指定注解的urlPatterns或value属性。所有其他属性是可选的默认设置(请参考javadoc获取更多细节)。当注解上唯一属性是url模式时推荐使用value,当使用了其他属性时使用urlPatterns属性。在同一注解上同时使用value 和 urlPatterns属性是非法的。如果没有指定Servlet名字则默认是全限定类名。被注解的sevlet必须指定至少一个url模式进行部署。如果同一个Servlet类以不同的名字声明在部署描述符中,必须实例化一个新的Servlet实例。如果同一个Servlet类使用定义在4-35页的4.4.1节 “编程式添加和配置Servlet” 的编程式API添加到ServletContext,使用@WebServlet注解声明的值必须被忽略,必须创建一个指定名字的Servlet的新的实例。
@WebServlet注解的类必须继承javax.servlet.http.HttpServlet类。
下面是如何使用该注解的一个示例。
代码示例8-1 @WebServlet 注解示例
部署描述符
metadata-complete
处理注解和web fragment
web.xml 2.5
yes
no
web.xml 2.5
no
yes
web.xml 3.0
yes
no
web.xml 3.0
no
yes