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>

这样一个过滤器就完成了

posted on 2017-02-15 08:37  云破月丶  阅读(115)  评论(0编辑  收藏  举报