在Servlet2.5规范之前,Java Web应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过Annotation(注解)来配置管理Web组件,因此web.xml文件可以变得更加简洁,这也是Servlet3.0的重要简化。
(1)通过web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello1</url-pattern>
</servlet-mapping>
</web-app>
(2)使用@WebServlet Annotation进行配置
@WebServlet(name = "Hello",urlPatterns = "/helloWorld")
public class Hello extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
jsp页面如下图所示,此处的href的值要与<url-pattern>或者urlPatterns的值保持一致:
注:
a. 不要在web.xml文件的根元素(<web-app---/>)中指定metadata-complete=“true”;
b .不要在web.xml文件中配置该Servlet(当web.xml和注解同时存在的时候,会使用的是web.xml中所配置的内容,而忽略了注解配置的内容);
Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持,);如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持)。