Servlet的两种配置方式:web.xml和@WebServlet注解

7051 / 2025-09-19 12:41:33 2018世界杯球队

Servlet配置:WEB_INF/web.xml和@WebServlet注解

1. 文件配置:WEB_INF/web.xml2. 注解配置:@WebServlet3. 两者同时使用注意事项

Servlet2.5 规范之前,Java Web应用的绝大部分组件都通过 web.xml 文件来配置管理。

Servlet3.0 规范可通过 Annotation 来配置管理Web组件,极大简化了原有的配置信息。

在Servlet3.0 以后,我们可以不需要在 web.xml 里面配置 servlet,只需要加上 @WebServlet 注解就可以修改该 Servlet 的属性了。

1. 文件配置:WEB_INF/web.xml

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_4_0.xsd"

version="4.0">

demo01

com.demo.servlet.DemoServlet

0

demo01

/demo

username

root

password

1234

demo.html

demo.htm

demo.jsp

404

/error/404.html

2. 注解配置:@WebServlet

@WebServlet 的属性列表:

属性名类型注解描述nameString指定Servlet 的 name 属性,等价于 。如果没有显式指定,则该 Servlet 的取值即为类的全限定名valueString[]该属性等价于 urlPatterns 属性。两个属性不能同时使用urlPatternsString[]指定一组 Servlet 的 URL 匹配模式。等价于标签loadOnStartupint指定 Servlet 的加载顺序,等价于 标签initParamsWebInitParam[]指定一组 Servlet 初始化参数,等价于标签asyncSupportedboolean声明 Servlet 是否支持异步操作模式,等价于 标签descriptionString该 Servlet 的描述信息,等价于 标签displayNameString该 Servlet 的显示名,通常配合工具使用,等价于 标签

注解配置代码示例:

@WebServlet(

name = "TestWebServlet",

/*value = {"/demo", "/web"},*/

urlPatterns = {"/demo01", "/web01"},

loadOnStartup = 1,

initParams = {

@WebInitParam(name = "username", value = "root"),

@WebInitParam(name = "password", value = "123456"),

}

)

public class TestWebServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("TestWebServlet 执行...");

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

3. 两者同时使用注意事项

如果使用@WebServlet Annotation(注解)来配置Servlet,需要注意:

① 不要在 web.xml 文件的根元素()中指定 metadata-complete=“true”; ② 不要在 web.xml 文件中再次配置该 Servlet 相关属性。