ITPub博客

首页 > Linux操作系统 > Linux操作系统 > javaEE之filter实例1(转)

javaEE之filter实例1(转)

原创 Linux操作系统 作者:意想不到的歌 时间:2011-10-25 12:19:00 0 删除 编辑
j2EE 过滤器 filter
2008-10-04 14:51

A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
过滤器类是对请求资源或则响应资源执行过滤任务,过滤器类通过doFilter方法执行过滤任务。过滤器访问FilterConfig对象,获得初始化参数。FilterConfig对象是一个servletContext的引用,用它可以导入过滤任务需要的初始化参数。

在配置web应用程序的描述文件中配置过滤器。


        Authority Filter
        filter.AuthorityFilter
        <!-- 系统的登录页面是Logon.jsp -->
       
            logonpage
            logon.jsp
       

        <!-- 忽略登录验证的页面 -->
       
            ignoreuri
            logon,register
       

   

    <!-- 该过滤器对当前项目下面的所有页面都要求验证 -->
   
        Authority Filter
        /*
   

通常使用过滤器用作

1.安全认证过滤

2.登录和审核过滤

3、图片转换过滤

4.数据压缩过滤

5.加密过滤

6.Tokenizing Filters

7.Filters that trigger resource access events

8.XSL/T filters

9. Mime-type chain Filter

权限过滤率器例子:

package filter;

import java.io.IOException;
import java.util.StringTokenizer;

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;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.UserInfo;
/*
* 权限过滤率器,验证用户是否有足够的权限访问相应的内容
* 过滤器是有容器类调用,首先是调用init方法,初始化过滤器,然后是调用doFilter执行过滤操作
* 最后是destroy执行释放资源的操作。
*/
public class AuthorityFilter implements Filter {

    FilterConfig filterConfig=null;//接收容器传递给过滤器的filter配置对象
    String logon="logon.jsp";//登录进入页面
    String[] ignoreuri=null;//存储不需要登录就可以访问的页面
    public void destroy() {
    filterConfig=null;
    ignoreuri=null;
    }

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest req=(HttpServletRequest)request;
    HttpServletResponse rep=(HttpServletResponse)response;
    //判断当前请求是否为不需要登录的请求
    if(this.ignoreuri!=null){
        //不需要登录,继续过滤验证其他的页面
        String requri=req.getRequestURI();//获得请求字符串
        for(int i=0;i        if(requri.indexOf(this.ignoreuri[i])>0){
            filterChain.doFilter(request, response);
            return;
        }
        }
       
    }
    //判断用户是否登录
    HttpSession session=req.getSession();
    UserInfo user=(UserInfo)session.getAttribute("session_userinfo");
    if(user!=null && user.isLogon()){
        filterChain.doFilter(request, response);
    }else{
        //用户没有登录,进入登录页面
        rep.sendRedirect(logon);
    }
    }
/*
* @filterConfig是容器传递给filter用于执行初始化操作
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
    public void init(FilterConfig filterConfig) throws ServletException {
   
    this.filterConfig=filterConfig;
    //读入登录页面连接(在用户没有登录的时候会跳转到此页面)
    String logon=filterConfig.getInitParameter("logonpage");//从web描述文件中读入初始化页面
    if(logon!=null){
        this.logon=logon;
    }
    //读取不需要登录的连接
    String ignoreuri=filterConfig.getInitParameter("ignoreuri");
    StringTokenizer stTok=new StringTokenizer(ignoreuri,",");
    int i=0;
    while(stTok.hasMoreElements()){
        this.ignoreuri[i]=stTok.nextToken();
        i++;
    }
    }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25706637/viewspace-709637/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-17

  • 博文量
    4
  • 访问量
    11583