- 浏览: 133200 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
newhxj:
03-21 10:56:35.850: E/Web Conso ...
Android简易Flash播放器[转] -
roiz:
谢谢 很好正需要这资料
精确监听AbsListView滚动至底部[转]
filter过滤器主要使用于前台向后台传递数据是的过滤操作。程度很简单就不说明了,直接给几个已经写好的代码:
一、使浏览器不缓存页面的过滤器
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; /** * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面<p> * 配置参数<p> * checkSessionKey 需检查的在 Session 中保存的关键字<br/> * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath<br/> * notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath<br/> */ 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 com.qwserv.itm.pfl.log.svr; import java.io.IOException; 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 java.text.SimpleDateFormat; import javax.servlet.http.HttpServletRequest; import com.qwserv.itm.api.pfl.sm.vo.Person; import java.sql.*; import com.qwserv.itm.api.ServiceAccess; import com.qwserv.itm.util.toolkit.DebugUtil; public class ObserveFilter implements Filter { protected static DebugUtil log = DebugUtil.getInstances("pfl-log", ObserveFilter.class); public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //记录用户的访问操作 HttpServletRequest request1 = (HttpServletRequest)request; StringBuffer url = request1.getRequestURL(); //对url进行过滤,如果是js/css/image则不进行处理 if (judgeFile(url.toString())){ String operTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"). format(new java.util.Date()); String hostIp = request.getRemoteAddr(); String sessionId = request1.getRequestedSessionId(); String userId = ""; Person person = (Person)request1.getSession().getAttribute("userObj"); if (null != person && null != person.getUser()){ userId = person.getUser().getId(); } String queryString = request1.getQueryString(); if (null != queryString) { url.append('?'); url.append(queryString); } //保存到数据库中 saveToDb(userId,hostIp,sessionId,url.toString(),operTime,""); } // Pass control on to the next filter chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } public boolean judgeFile(String url){ if (url.endsWith(".gif") || url.endsWith(".jpg") || url.endsWith(".png") || url.endsWith(".bmp") || url.endsWith(".css") || url.endsWith(".js") || url.endsWith(".jsx")){ return false; } else { return true; } } public int saveToDb(String userId, String hostIp,String sessionId,String url, String operTime,String desc){ //将报表任务数据保存到数据库中 Connection conn = null; Statement st = null; try { //构造sql表达式,将数据插入数据库 conn = ServiceAccess.getSystemSupportService().getDefaultConnection(); st = conn.createStatement(); String sql = "insert into LOG_OBSERVE_HISTORY(USERID,URL,Detail,SessionID,HostName,StartDate) values('"+ userId + "','" + url + "','" + desc + "','" + sessionId + "','" + hostIp + "','" + operTime + "')"; if (ServiceAccess.getSystemSupportService().getConnectionType(conn)==ServiceAccess.getSystemSupportService().JCA_TYPE_ORACLE){ sql = "insert into LOG_OBSERVE_HISTORY(Id,USERID,URL,Detail,SessionID,HostName,StartDate) values(LOG_OBSERVE_SEQ.nextval,'"+ userId + "','" + url + "','" + desc + "','" + sessionId + "','" + hostIp + "',TO_DATE('" + operTime + "','YYYY-MM-DD HH24:MI:SS'))"; } st.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); log.error("--------------------The url String is:" + url + "-------------------------------"); return 1; //表示操作失败 } finally { if (null != st) { try{ st.close(); } catch(Exception e) { e.printStackTrace(); } st = null; } if (conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } conn = null; } } return 0; //表示操作成功 } }
<filter> <filter-name>ObserveFilter</filter-name> <filter-class>com.qwserv.itm.pfl.log.svr.ObserveFilter</filter-class> </filter> <filter-mapping> <filter-name>ObserveFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
五.Filter防止用户访问一些未被授权的资源
package com.drp.util.filter; import java.io.IOException; 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; public class AuthFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。 HttpServletRequest request = (HttpServletRequest)servletRequest;//;//如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中无法得到的方法,就要把此request对象构造成HttpServletRequest HttpServletResponse response = (HttpServletResponse)servletResponse。 String currentURL = request.getRequestURI();//取得根目录所对应的绝对路径: String targetURL = currentURL.substring(currentURL.indexOf("/", 1), currentURL.length()); //截取到当前文件名用于比较 HttpSession session = request.getSession(false); if (!"/login.jsp".equals(targetURL)) {//判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环 if (session == null || session.getAttribute("user") == null) {//*用户登录以后需手动添加session System.out.println("request.getContextPath()=" + request.getContextPath()); response.sendRedirect(request.getContextPath() + "/login.jsp");//如果session为空表示用户没有登录就重定向到login.jsp页面 return; } } //加入filter链继续向下执行 filterChain.doFilter(request, response);//.调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。 } public void init(FilterConfig filterConfig) throws ServletException { } }
<filter> <filter-name>AuthFilter</filter-name> <filter-class>com.drp.util.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>*.jsp</url-pattern>//表示对所有jsp文件有效 </filter-mapping>
转至:http://www.cnblogs.com/yqskj/articles/2226774.html
发表评论
-
Java基于Socket文件传输示例[转]
2012-11-21 17:58 757最近需要进行网络传输大文件,于是对基于socket的文件传输作 ... -
Java基础:三步学会Java Socket编程3[转]
2012-11-21 17:17 859第三步 实现信息共享:在Socket上的实时交流 网络的 ... -
Java基础:三步学会Java Socket编程2[转]
2012-11-21 17:15 742第二步 多个客户同时连接 在实际的网络环境里,同一时间只 ... -
Java基础:三步学会Java Socket编程1[转]
2012-11-21 17:12 875第一步 充分理解Socket ... -
一步步优化JVM七:其他[转]
2012-11-10 23:37 1090边缘问题 在某 ... -
一步步优化JVM六:优化吞吐量[转]
2012-11-07 00:23 7102如果你已经进行 ... -
一步步优化JVM五:优化延迟或者响应时间(3)[转]
2012-11-07 00:20 6711CMS垃圾回收器周期 一旦young的空 ... -
一步步优化JVM五:优化延迟或者响应时间(2)[转]
2012-11-07 00:13 1617优化CMS(concurrent garbage col ... -
一步步优化JVM五:优化延迟或者响应时间(1)[转]
2012-11-06 23:35 1144本节的目标是做 ... -
一步步优化JVM四:决定Java堆的大小和内存占用[转]
2012-11-06 19:21 1215到目前为止,还没有做明确的优化工作。只是做了初始 ... -
一步步优化JVM三:GC优化基础[转]
2012-11-06 18:52 1172本节主要描述关于垃圾回收器性能的三个指标,三 ... -
一步步优化JVM二:JVM部署模型和JVM Runtime[转]
2012-11-06 18:27 1250选择JVM部署模型 JVM部署模型的选择总体来说 ... -
一步步优化JVM(一)——概述[转]
2012-11-06 18:04 1268现代JVM是一个具有灵活适应各种应用能力的软件,尽 ... -
Spring Aop 日志管理[转]
2012-07-14 01:54 1841Spring Aop 日志管理 Sp ... -
Spring中的用于格式化的annotation[转]
2012-06-28 21:51 2036转至http://linksc.iteye.com/blog/ ... -
Hibernate的ID生成策略/联合主键解决方案[转]
2012-06-27 00:22 883转至http://blog.163.com/fengz ... -
HibernateTemplate Callback 2
2012-06-26 23:46 707package com.bee.common.hiber ... -
HibernateTemplate Callback
2012-06-26 23:45 844package com.bee.common.hiber ... -
Spring管理Hibernate事务[转]
2012-06-26 22:56 8581.TransactionProxyFactoryBean ... -
OpenSessionInViewFilter、Session、HibernateTemplate[转]
2012-06-26 22:51 2688从书上我了解到Session接 ...
相关推荐
### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...
在DirectShow领域,Transform Filter是一种特殊类型的过滤器,它用于处理媒体流,特别是进行像素级别的图像变换。"翻转图像的Transform Filter"是这样一个自定义过滤器,它的主要任务是实现图像的翻转功能,包括水平...
综上所述,MATLAB的`filter`函数是数字信号处理的核心工具,配合不同的滤波器设计方法和`fft`函数,可以实现各种类型的滤波操作。通过深入理解并实践这些知识点,我们可以更好地理解和处理实际的信号处理问题。在...
Python中的`filter()`函数是内置的高阶函数,它用于从序列中筛选出满足特定条件的元素。在处理数据时,`filter()`提供...在学习和使用Python时,掌握`filter()`的用法能够提高解决问题的能力,尤其是在处理大量数据时。
在冲击响应的计算中,`filter`函数和`conv`函数都被用来实现相同的功能,但方法略有不同。`filter`直接根据差分方程求解,而`conv`则是通过卷积计算出响应。`impz`函数则提供了一种简便的方式来直接获取系统的脉冲...
### VSFILTER的使用方法 #### 一、简介 VSFilter(Video Subtitle Filter)是一款功能强大的字幕渲染软件,能够帮助用户轻松加载字幕到视频播放器中,从而解决了很多视频播放时字幕加载的问题。它支持多种字幕格式...
在本教程中,我们将深入探讨Intent Filter的使用方法。 首先,Intent Filter的配置主要在AndroidManifest.xml文件中进行。通过在、、或标签内添加<intent-filter>子标签,我们可以为每个组件定义其能够接收的Intent...
- **异步Filter**:Java Servlet 3.0及以上版本支持异步Filter,可以在`doFilter`方法中使用异步处理,提高性能。 - **Filter的级联**:一个Filter可以调用另一个Filter,实现更复杂的逻辑。 ### 5. Filter的实际...
如果对smarty比较熟悉的话,学习angularjs会比较容易一点,这篇文章给大家介绍angularjs filter用法详解,感兴趣的朋友一起学习吧 Filter简介 Filter是用来格式化数据用的。 Filter的基本原型( ‘|’ 类似于Linux中...
##### 3.1 ADO Filter特殊用法 在使用ADO的Filter时,如果需要比较日期字段,例如`Fdate >= date`,可能会遇到问题。正确的做法是使用`Fdate >= DateNN`这样的表达式,其中`DateNN`表示数据库中的日期字段。至于...
C语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC语言头文件 FILTERC...
12. 结论(Conclusion):在用户指南的最后部分,会总结FilterPro的主要功能和使用方法,以帮助用户快速掌握软件的使用技巧,并能有效地应用于实际的电子设计工作中。 在阅读完整个FilterPro用户指南后,用户应该...
在本教程中,我们将深入探讨如何使用Mina的`SslFilter`来构建安全的网络应用。 **1. SSL/TLS协议概述** SSL(Secure Sockets Layer)和它的后续版本TLS(Transport Layer Security)是用于在互联网上提供安全通信的...
使用方法是在PHP脚本中首先引入需要的过滤器类文件,然后创建过滤器类的实例,并对其应用filter()方法。具体步骤如下: 1. 引入Zend_Filter_StringToLower类所在的文件: ```php require_once 'Zend/Filter/...
本教程将涵盖FilterPro的安装过程以及基本的使用方法,包括Sallen-Key滤波器和多反馈(MFB)滤波器的设计。 首先,让我们开始FilterPro的安装步骤。下载名为"FilterProDTSetup.exe"的安装文件,双击运行。在安装...
详尽地介绍了JSP中Filter的使用方法,欢迎下载本资源,谢谢
然后需要在SpringBoot应用中配置Filter,可以通过实现WebMvcConfigurer接口并重写addFilters方法,或者使用@ServletComponentScan注解来自动注册带有@WebFilter注解的类。 在SpringBoot中,过滤器经常用于请求日志...
2. **配置Filter**:在接下来的界面中,为Filter选择一个实现类,并实现Filter接口中的三个方法:`doFilter()`, `init()`, 和 `destroy()`。`doFilter()`方法是核心,它会在每次请求经过时被调用。`init()`方法在...
本文将深入探讨`Filter`的使用,并以一个登录验证的实例来阐述其工作原理和应用。 `Filter`是Java Servlet规范定义的一种机制,它允许开发者在请求到达目标Servlet或JSP之前以及响应离开Servlet容器返回给客户端...
2. **初始化测试**:测试`init`方法,确认初始化参数是否正确传递并被Filter实例所使用。可以使用Mockito等框架模拟ServletConfig对象来实现。 3. **过滤逻辑测试**:针对`doFilter`方法进行测试,确保Filter能够...