四个有用的过滤器Filter(转载)

来源:互联网 发布:树状图制作软件 编辑:程序博客网 时间:2024/06/04 17:48

一、使浏览器不缓存页面的过滤器

import javax.servlet.*;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

 

/**

* 用于的使 Browser 不缓存页面的过滤器

*/

public class ForceNoCacheFilter implements Filter {

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException

{

   ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");

   ((HttpServletResponse) response).setHeader("Pragma","no-cache");

   ((HttpServletResponse) response).setDateHeader ("Expires", -1);

   filterChain.doFilter(request, response);

}

 

public void destroy()

{

}

 

     public void init(FilterConfig filterConfig) throws ServletException

{

}

}

 

二、检测用户是否登陆的过滤器

 

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.util.List;

import java.util.ArrayList;

import java.util.StringTokenizer;

import java.io.IOException;

 

/**

* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面

 

 

* 配置参数

 

 

* checkSessionKey 需检查的在 Session 中保存的关键字

 

* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath

 

* notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath

 

*/

public class CheckLoginFilter

implements Filter

{

     protected FilterConfig filterConfig = null;

     private String redirectURL = null;

     private List notCheckURLList = new ArrayList();

     private String sessionKey = null;

 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException

{

   HttpServletRequest request = (HttpServletRequest) servletRequest;

   HttpServletResponse response = (HttpServletResponse) servletResponse;

 

    HttpSession session = request.getSession();

   if(sessionKey == null)

   {

    filterChain.doFilter(request, response);

    return;

   }

   if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)

   {

    response.sendRedirect(request.getContextPath() + redirectURL);

    return;

   }

   filterChain.doFilter(servletRequest, servletResponse);

}

 

public void destroy()

{

   notCheckURLList.clear();

}

 

private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)

{

   String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());

   return notCheckURLList.contains(uri);

}

 

public void init(FilterConfig filterConfig) throws ServletException

{

   this.filterConfig = filterConfig;

   redirectURL = filterConfig.getInitParameter("redirectURL");

   sessionKey = filterConfig.getInitParameter("checkSessionKey");

 

   String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");

 

   if(notCheckURLListStr != null)

   {

    StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");

    notCheckURLList.clear();

    while(st.hasMoreTokens())

    {

     notCheckURLList.add(st.nextToken());

    }

   }

}

}

 

三、字符编码的过滤器

 

import javax.servlet.*;

import java.io.IOException;

 

/**

* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题

*/

public class CharacterEncodingFilter

implements Filter

{

protected FilterConfig filterConfig = null;

protected String encoding = "";

 

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException

{

         if(encoding != null)

          servletRequest.setCharacterEncoding(encoding);

         filterChain.doFilter(servletRequest, servletResponse);

}

 

public void destroy()

{

   filterConfig = null;

   encoding = null;

}

 

     public void init(FilterConfig filterConfig) throws ServletException

{

          this.filterConfig = filterConfig;

         this.encoding = filterConfig.getInitParameter("encoding");

 

}

}

 

四、资源保护过滤器

 

 

package catalog.view.util;

 

import javax.servlet.Filter;

import javax.servlet.FilterConfig;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import java.io.IOException;

import java.util.Iterator;

import java.util.Set;

import java.util.HashSet;

//

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

 

/**

 * This Filter class handle the security of the application.

 *

 * It should be configured inside the web.xml.

 *

 * @author Derek Y. Shen

 */

public class SecurityFilter implements Filter {

 //the login page uri

 private static final String LOGIN_PAGE_URI = "login.jsf";

 

 //the logger object

 private Log logger = LogFactory.getLog(this.getClass());

 

 //a set of restricted resources

 private Set restrictedResources;

 

 /**

  * Initializes the Filter.

  */

 public void init(FilterConfig filterConfig) throws ServletException {

  this.restrictedResources = new HashSet();

  this.restrictedResources.add("/createProduct.jsf");

  this.restrictedResources.add("/editProduct.jsf");

  this.restrictedResources.add("/productList.jsf");

 }

 

 /**

  * Standard doFilter object.

  */

 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)

   throws IOException, ServletException {

  this.logger.debug("doFilter");

 

  String contextPath = ((HttpServletRequest)req).getContextPath();

  String requestUri = ((HttpServletRequest)req).getRequestURI();

 

  this.logger.debug("contextPath = " + contextPath);

  this.logger.debug("requestUri = " + requestUri);

 

  if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) {

   this.logger.debug("authorization failed");

   ((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res);

  }

  else {

   this.logger.debug("authorization succeeded");

   chain.doFilter(req, res);

  }

 }

 

 public void destroy() {}

 

 private boolean contains(String value, String contextPath) {

  Iterator ite = this.restrictedResources.iterator();

 

  while (ite.hasNext()) {

   String restrictedResource = (String)ite.next();

  

   if ((contextPath + restrictedResource).equalsIgnoreCase(value)) {

    return true;

   }

  }

 

  return false;

 }

 

 private boolean authorize(HttpServletRequest req) {

 

              //处理用户登录

       /* UserBean user = (UserBean)req.getSession().getAttribute(BeanNames.USER_BEAN);

 

  if (user != null && user.getLoggedIn()) {

   //user logged in

   return true;

  }

  else {

   return false;

  }*/

 }

}

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 浴缸下水口漏水怎么办 浴缸下水器漏水怎么办 铁皮接头处漏水怎么办 马桶被堵死了怎么办 家里灯泡坏了怎么办 家里电路烧了怎么办 如果电脑开不了怎么办 热水器水管子漏水怎么办 淋浴头开关滴水怎么办 淋浴头一直滴水怎么办 饮水机放桶漏水怎么办 热水器热水阀门漏水怎么办 热水器热水出口漏水怎么办 热水器上水管漏水怎么办 水管往外漏水怎么办 ppr热水管漏水怎么办 大半夜水闸爆了怎么办 热水器不热水了怎么办 水龙头外皮裂了怎么办 电热水龙头坏了怎么办 太阳能存不住水怎么办 混水阀断裂漏水怎么办 洗澡淋浴头漏水怎么办 马桶有异物堵住怎么办 捷达机油盖漏油怎么办 乳化油臭了怎么办 自行车前叉严重生锈怎么办 自行车链条生锈了怎么办 自行车链子生锈了怎么办 对切削液过敏怎么办 齿轮油加到机油怎么办 机油加液压油里怎么办 液压油里面有水怎么办 加油站双层复合管漏油怎么办 预制屋面板底面渗漏怎么办 焊电焊眼睛疼怎么办 下水主管道篦子怎么办 墙里热水管堵了怎么办 热水管堵住了怎么办 热水管堵塞了怎么办 下水道被油渍堵死怎么办