Ánh xạ bộ lọc trong Web.xml
Bộ lọc JSP là gì?
- Các bộ lọc trong web.xml được sử dụng cho chức năng lọc của Java ứng dụng web.
- Họ chặn các yêu cầu từ khách hàng trước khi họ cố gắng truy cập tài nguyên
- Họ thao tác các phản hồi từ máy chủ và gửi đến máy khách.
Các loại bộ lọc trong JSP
- Bộ lọc xác thực
- Bộ lọc nén dữ liệu
- Bộ lọc mã hóa
- Bộ lọc chuỗi MIME
- Bộ lọc ghi nhật ký
- Bộ lọc mã thông báo
Các bộ lọc được xác định trong web.xml và chúng là bản đồ tới servlet hoặc JSP. Khi bộ chứa JSP khởi động với ứng dụng web, nó sẽ tạo phiên bản của từng bộ lọc trong web.xml đã được khai báo trong bộ mô tả triển khai.
Các phương pháp lọc JSP
Sau đây là các phương pháp lọc:
Công khai void doFilter(ServletRequest, ServletResponse, FilterChain)
Điều này được gọi mỗi khi một yêu cầu/phản hồi được truyền từ mọi máy khách khi nó được yêu cầu từ một tài nguyên.
Công khai void init(FilterConfig)
Điều này để chỉ ra rằng bộ lọc trong JSP đã được đưa vào sử dụng
Phá hủy khoảng trống công khai ()
Điều này để cho biết bộ lọc đã được đưa ra khỏi dịch vụ.
Ví dụ
Trong ví dụ này, chúng tôi đã tạo bộ lọc và ánh xạ vào Java bộ lọc web.xml
Gurufilter.java
package demotest; import java.io.IOException; import java.util.Date; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import Javax.servlet.http.HttpServletRequest; public class GuruFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, Filterchain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest req = (HttpServletRequest) request; String ipAddress = req.getRemoteAddr(); System.out.println("IP Address "+ipAddress + ", Time is" + new Date().toString()); // pass the request along the filter chain chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { String guruparam = fConfig.getInitParameter("guru-param"); //Print the init parameter System.out.println("Test Param: " + guruparam); } }
Web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name> test</display-name> <filter> <description> </description> <display-name> GuruFilter</display-name> <filter-name>GuruFilter</filter-name> <filter-class>demotest.GuruFilter</filter-class> <init-param> <param-name>guru-param</param-name> <param-value>This is guru paramter</param-value> </init-param> </filter> <filter-mapping> <filter-name>GuruFilter</filter-name> <url-pattern>/GuruFilter</url-pattern> </filter-mapping>
Giải thích mã
Gurufilter.java
Dòng mã 17-32: Ở đây chúng ta sử dụng phương thức “doFilter” để lấy đối tượng yêu cầu (trong ví dụ của chúng ta, đối tượng yêu cầu là req(HttpServletRequest object)) và lấy địa chỉ từ xa của máy khách rồi in ra bảng điều khiển cũng như in ngày và giờ ra bảng điều khiển.
Dòng mã 33-37: Ở đây chúng tôi đang sử dụng phương thức init trong đó chúng tôi lấy tham số init và in tham số init trong bảng điều khiển.
Web.xml
Dòng mã 10-11: Ánh xạ bộ lọc trong web.xml cho GuruFilter với tên lớp GuruFilter.java trong đó chúng ta có tên bộ lọc là GuruFilter và lớp bộ lọc là đường dẫn thư mục của lớp GuruFilter
Dòng mã 13-15: Ánh xạ tham số init có tên là guru-param và lấy giá trị của nó được đặt dưới thẻ lọc để init-param này đã được xác định cho gurufilter
Đầu ra:
Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:
- Đầu ra là Test Param từ tham số init
- Và tìm nạp địa chỉ IP, ngày giờ của nó.