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

Love The Way You Lie 2023-07-25 08:48 64阅读 0赞

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

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

Servlet2.5 规范之前,Java Web应用的绝大部分组件都通过 web.xml 文件来配置管理。
Servlet3.0 规范可通过 Annotation 来配置管理Web组件,极大简化了原有的配置信息。

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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_4_0.xsd" version="4.0">
  3. <!--servlet与servlet-mapping标签需同时使用-->
  4. <!--创建servlet标签-->
  5. <servlet>
  6. <!--给指定的servlet类起一个名字-->
  7. <servlet-name>demo01</servlet-name>
  8. <!--servlet类的全限定路径-->
  9. <servlet-class>com.demo.servlet.DemoServlet</servlet-class>
  10. <!--servlet初始化加载优先级(0~10)-->
  11. <load-on-startup>0</load-on-startup>
  12. </servlet>
  13. <!--创建servlet映射标签-->
  14. <servlet-mapping>
  15. <!--映射到哪个servlet,与上面一致-->
  16. <servlet-name>demo01</servlet-name>
  17. <!--客户端访问路径 localhost:8080/项目名称/demo-->
  18. <url-pattern>/demo</url-pattern>
  19. </servlet-mapping>
  20. <!--全局初始化参数:整个web应用-->
  21. <context-param>
  22. <param-name>username</param-name>
  23. <param-value>root</param-value>
  24. </context-param>
  25. <context-param>
  26. <param-name>password</param-name>
  27. <param-value>1234</param-value>
  28. </context-param>
  29. <!--默认显示页面,如有404则会继续查找下一个welcome-file标签-->
  30. <welcome-file-list>
  31. <welcome-file>demo.html</welcome-file>
  32. <welcome-file>demo.htm</welcome-file>
  33. <welcome-file>demo.jsp</welcome-file>
  34. </welcome-file-list>
  35. <!--当页面未找到报404时显示 location 标签指定的页面-->
  36. <error-page>
  37. <error-code>404</error-code>
  38. <!--需要web项目下新建/error/404.html页面-->
  39. <location>/error/404.html</location>
  40. </error-page>
  41. </web-app>

2. 注解配置:@WebServlet

@WebServlet 的属性列表:



















































属性名 类型 注解描述
name String 指定Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用
urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern>标签
loadOnStartup int 指定 Servlet 的加载顺序,等价于 <load-on-startup>标签
initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于<init-param>标签
asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签
description String 该 Servlet 的描述信息,等价于 <description>标签
displayName String 该 Servlet 的显示名,通常配合工具使用,等价于 <display-name>标签

注解配置代码示例:

  1. @WebServlet(
  2. name = "TestWebServlet",
  3. /*value = {"/demo", "/web"},*/
  4. urlPatterns = { "/demo01", "/web01"},
  5. loadOnStartup = 1,
  6. initParams = {
  7. @WebInitParam(name = "username", value = "root"),
  8. @WebInitParam(name = "password", value = "123456"),
  9. }
  10. )
  11. public class TestWebServlet extends HttpServlet {
  12. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  13. System.out.println("TestWebServlet 执行...");
  14. }
  15. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  16. doPost(request, response);
  17. }
  18. }

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,64人围观)

还没有评论,来说两句吧...

相关阅读