Servlet 过滤器方法
过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类。javax.servlet.Filter 接口定义了三个方法
序号
方法 & 描述
1
public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。
2
public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
3
public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
使用实例:
建一个类,实现 javax.servlet.Filter 接口,重写里面的方法
package com.maya.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Testfilter implements Filter {
ArrayList<String> list=new ArrayList<String>();
@Override
public void destroy() {
//
}
@Override
//每次请求执行的代码
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
String s1=request.getRequestURI();
String s2=request.getContextPath();
String s3=s1.substring(s2.length());
if(list.contains(s3)){
arg2.doFilter(request, response);
}
else{
HttpSession session=request.getSession();
if(session.getAttribute("user")==null){
response.sendRedirect("denglu.jsp");
}
else{
arg2.doFilter(request, response);
}
}
}
@Override
//第一遍要执行的代码
public void init(FilterConfig arg0) throws ServletException {
String values=arg0.getInitParameter("kefangwen");
String[] str=values.split(",");
list.addAll(Arrays.asList(str));
}
}
web.xml中的配置(复制粘贴)
<?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" version="3.1">
<filter>
<filter-name>testfilter</filter-name>
<filter-class>com.maya.filter.Testfilter</filter-class>
<init-param>
<param-name>kefangwen</param-name>
<param-value>index.jsp,index,main.jsp,main</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>testfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
这样一个过滤器就完成了