Deployment Descriptor (web.xml) là gì?

  • Deployment Descriptor là một file XML có tên là web.xml, nằm trong thư mục WEB-INF của ứng dụng web.
  • Đây là nơi khai báocấu hình các thành phần của ứng dụng như servlet, filter, listener, error pages, session timeout, security, v.v.
  • web.xml dễ dàng quản lý cấu hình tập trung tại một nơi.

Cấu trúc cơ bản của web.xml

Ví dụ về khai báo và mapping Servlet

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         version="3.0">

    <!-- Khai báo Servlet -->
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.example.MyServlet</servlet-class>
    </servlet>

    <!-- Mapping URL đến Servlet -->
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

</web-app>

Các ví dụ khác

Cấu hình trang mặc định (welcome file)

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>servlet</welcome-file>
</welcome-file-list>

Khi người dùng truy cập vào thư mục gốc của ứng dụng (thường là: /), server sẽ tự động tìm và hiển thị một file trong danh sách trên theo thứ tự ưu tiên.


Khai báo và mapping Filter

<filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>com.example.AuthFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
</filter-mapping>

Filter được dùng để kiểm tra phiên đăng nhập, lọc dữ liệu, logging, v.v.


Cấu hình tham số khởi tạo (init-param)

<servlet>
    <servlet-name>ConfigServlet</servlet-name>
    <servlet-class>com.example.ConfigServlet</servlet-class>
    <init-param>
        <param-name>maxCommentsPerMinute</param-name>
        <param-value>10</param-value>
    </init-param>
</servlet>

Trang lỗi tùy chỉnh (error-page)

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>

Cấu hình timeout cho session

<session-config>
    <session-timeout>30</session-timeout> <!-- phút -->
</session-config>

Cấu hình bảo mật (Security Constraint)

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Area</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>MyRealm</realm-name>
</login-config>

Khi nào nên dùng web.xml?

  • Khi bạn muốn tách cấu hình ra khỏi mã nguồn.
  • Khi cần tương thích với các ứng dụng Java EE cũ (Servlet 2.5 trở xuống).