`

常用JAVA过滤器用法

阅读更多
java 代码
一、使浏览器不缓存页面的过滤器    

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;     
   }*/      
}       
分享到:
评论

相关推荐

    Java EE常用框架.xmind

    使用过滤器实现登录和退出功能 步骤 当用户没有认证时,请求loginurl进行认证【上边我们已经配置了】,用户身份和用户密码提交数据到loginurl FormAuthenticationFilter拦截住取出request中的username...

    Java开发技术大全(500个源代码).

    DumpMethods.java 使用反射机制来获取类中的方法 getClassName.java 利用反射机制获取类的名字 invokeConstructor.java 利用反射机制调用构造器 invokeMethod.java 利用反射机制调用成员方法 listConstructors....

    JAVA上百实例源码以及开源项目

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    Java基础知识点总结.docx

    过滤器模式 192 组合模式 193 装饰器模式★★★★★ 196 外观模式 201 享元模式 204 代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式...

    java开源包8

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包11

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包6

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包9

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包101

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包4

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    java开源包5

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包10

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    JAVA语言程序设计【高清版】.pdf

    192 10.1 数据流的基本概念 192 10.1.1 输入数据流 193 10.1.2 输出数据流 193 10.2 基本字节数据流类 193 10.2.1 文件数据流 193 10.2.2 过滤器数据流 195 10.3 基本字符流 195 10.4 文件的处理 ...

    java开源包3

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包1

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    张孝祥Java就业培训教程.pdf

    在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式...

    Java经典编程源码基础例程300.zip

    实例030 循环体的过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组的最小值 44 实例032 将二维数组中的行列互换 45 实例033 利用数组随机抽取幸运观众 47 实例034 用数组设置JTable表格的 列名与列宽 49 ...

    Java语言基础下载

    Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令元素 588 页面指令 588 标签库指令 593 脚本元素 593 动作元素...

Global site tag (gtag.js) - Google Analytics