Filter
-
简介:过滤客户端发送的url请求,确保服务端某些网页资源不被随意访问
-
使用方式:
-
创建一个实现Filter接口的实现类,并实现对应的方法、指定过滤的做法
import java.io.IOException; 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.annotation.WebFilter; public class EncodeFilter implements Filter { //构造方法 public EncodeFilter() { // TODO Auto-generated constructor stub } //filter类的销毁方法 public void destroy() { // TODO Auto-generated method stub } //处理过滤的方法 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here // pass the request along the filter chain chain.doFilter(request, response); } //初始化方法 public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
-
在web.xml配置文件中对Filter类进行过滤配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>web03</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置filter类的别名 --> <filter> <filter-name>EncodeFilter</filter-name> <filter-class>cn.zero.filter.EncodeFilter</filter-class> </filter> <!-- 为filter类配置过滤的请求url --> <filter-mapping> <filter-name>EncodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
-
-
Filter接口方法的介绍
-
init():初始化方法,用于对一些数据的初始化设置
-
destory():销毁方法,用于销毁Filter对象
-
doFilter():过滤方法,用于对指定url请求进行过滤
-
-
web.xml配置的介绍
-
配置filter实现类的名称:
<filter> <filter-name>...</filter-name> <filter-class>...</filter-class> </filter>
-
用于配置filter实现类的名称
-
用于指定filter实现类,必须使用包全名
-
-
配置filter实现类的映射url
<filter-mapping> <filter-name>...</filter-name> <url-pattern>...</url-pattern> </filter-mapping>
-
用于指定1.中配置的filter实现类的名称
-
用于为filter实现类映射要过滤的url请求
-
-
-
Filter实现类过滤请求的过程:
-
接收客户端的url请求
-
查找配置文件中的Filter实现类配置,从上到下依次经过每一个符合条件的Filter实现类的过滤操作(doFilter()方法中chain.doFilter(request, response);前面的代码处理)
-
经过过滤的url请求,经服务端处理后,还要逆序经过每一个符合条件的Filter实现类的再处理(doFilter()方法中chain.doFilter(request, response);后面的代码处理)
-
经过再处理后,返回到客户端
-