Deployment Descriptor (web.xml) là gì?
- Deployment Descriptor là một file XML có tên là
web.xml, nằm trong thư mụcWEB-INFcủa ứng dụng web. - Đây là nơi khai báo và cấ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.xmldễ 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).
