- 浏览: 864059 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (280)
- java相关 (29)
- linux系统 (55)
- ipsec (0)
- ssl (3)
- 信息安全 (13)
- web相关 (35)
- windows (9)
- c,c++ (14)
- log4j (3)
- hibernate (8)
- sqlite (1)
- 程序人生 (2)
- js (2)
- 生活点滴 (3)
- 网络相关 (14)
- 问题积累 (15)
- 数据库相关 (27)
- 软件测试 (2)
- PKI相关 (2)
- 程序设计 (7)
- 犄角旮旯 (0)
- 杂七杂八 (0)
- 硬件相关 (14)
- 防火墙 (2)
- 电子商务 (2)
- 多媒体相关 (1)
- 内存管理 (4)
- 面向对象 (1)
- csp (1)
- 驱动开发 (3)
- 移动开发 (2)
- openssl多线程实例 (1)
最新评论
-
xiaoyao3857:
博主很有探索精神嘛,学习了
Linux主机名Hostname详解 -
hiskyrisa:
言简意赅,好文章。
Flex是什么 -
layznet:
犯了类似错误。使用的是derby数据库。driverClass ...
java.sql.SQLException: No suitable driver -
idision:
你好,文章有一句createSubjectKeyId(keyT ...
bouncycastle 产生证书 -
zheng12tian:
代码有全的不?只贴一部分,,,,
在LOG4J中把日志写入远程数据库
Filter作用 :
每当使用应用服务器页面或servlet的时候,应用服务器就会根据web.xml里面配置的filter 去进行过滤理。
调用处理过程就是:
1.接受request->去处理第一个filter.init-> 处理第一个filter.doFilter
2.如果不想继续使用filter过滤就在filter.doFilter中使用 return
3.如果要继续使用filter过滤就filter.doFilter中 chain.doFilter(servletRequest, servletResponse);
使用例子:
1.web.xml配置
<filter>
<filter-name>Filter_name</filter-name>
<filter-class>Filter_class_name</filter-class>
<init-param>
<description>set 'true' to enable the filter</description>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>excepts</param-name>
<param-value>Excepts_Path</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter_name</filter-name>
<url-pattern>filter_path</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Filter_name</filter-name>
<url-pattern>filter_path</url-pattern>
</filter-mapping>
2、java代码
2.1 init 函数
public void init(FilterConfig filterConfig) throws ServletException {
//检查是否打开SSOFilter功能
String _enable = filterConfig.getInitParameter("enabled");
if (_enable != null && "true".equalsIgnoreCase(_enable)) {
enabled = true;
}
//初始化例外列表,即不经过SSOFilter的请求地址
String _exceptStr = filterConfig.getInitParameter("excepts");
if (_exceptStr != null) {
String[] _excepts = _exceptStr.split(",");
for (int i = 0; i < _excepts.length; i ++) {
excepts.add(_excepts[i]);
}
}
}
2.2 doFilter函数
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String path = request.getServletPath();
/**
* 当WEB程序启了SSOFilter,并且请求的路径没被配置为例外时,
* 检查用户是否已通过统一用户平台登录,已登录的话创建会话,否则转到统一登录页面。
*/
if (enabled && !excepts.contains(path)) {
if (logger.isDebugEnabled()) {
logger.debug("check member has signoned ...");
}
boolean signOned = SSOHelper.hasSignOned(request, response);
if (logger.isDebugEnabled()) {
logger.debug("Signoned? " + signOned);
}
if (!signOned) {
String SSOContextUri = SysParamHelper.getSysParam(SysParamConstants.CONTEXT_URI_SSO);
StringBuffer url = new StringBuffer(SSOContextUri);
url.append("/Login");
//记住入口地址
url.append("?entrance=");
url.append(request.getRequestURL());
if (request.getQueryString() != null) {
url.append("|");
url.append(request.getQueryString());
}
response.sendRedirect(url.toString());
return;
}
}
chain.doFilter(servletRequest, servletResponse);
}
每当使用应用服务器页面或servlet的时候,应用服务器就会根据web.xml里面配置的filter 去进行过滤理。
调用处理过程就是:
1.接受request->去处理第一个filter.init-> 处理第一个filter.doFilter
2.如果不想继续使用filter过滤就在filter.doFilter中使用 return
3.如果要继续使用filter过滤就filter.doFilter中 chain.doFilter(servletRequest, servletResponse);
使用例子:
1.web.xml配置
<filter>
<filter-name>Filter_name</filter-name>
<filter-class>Filter_class_name</filter-class>
<init-param>
<description>set 'true' to enable the filter</description>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>excepts</param-name>
<param-value>Excepts_Path</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter_name</filter-name>
<url-pattern>filter_path</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Filter_name</filter-name>
<url-pattern>filter_path</url-pattern>
</filter-mapping>
2、java代码
2.1 init 函数
public void init(FilterConfig filterConfig) throws ServletException {
//检查是否打开SSOFilter功能
String _enable = filterConfig.getInitParameter("enabled");
if (_enable != null && "true".equalsIgnoreCase(_enable)) {
enabled = true;
}
//初始化例外列表,即不经过SSOFilter的请求地址
String _exceptStr = filterConfig.getInitParameter("excepts");
if (_exceptStr != null) {
String[] _excepts = _exceptStr.split(",");
for (int i = 0; i < _excepts.length; i ++) {
excepts.add(_excepts[i]);
}
}
}
2.2 doFilter函数
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String path = request.getServletPath();
/**
* 当WEB程序启了SSOFilter,并且请求的路径没被配置为例外时,
* 检查用户是否已通过统一用户平台登录,已登录的话创建会话,否则转到统一登录页面。
*/
if (enabled && !excepts.contains(path)) {
if (logger.isDebugEnabled()) {
logger.debug("check member has signoned ...");
}
boolean signOned = SSOHelper.hasSignOned(request, response);
if (logger.isDebugEnabled()) {
logger.debug("Signoned? " + signOned);
}
if (!signOned) {
String SSOContextUri = SysParamHelper.getSysParam(SysParamConstants.CONTEXT_URI_SSO);
StringBuffer url = new StringBuffer(SSOContextUri);
url.append("/Login");
//记住入口地址
url.append("?entrance=");
url.append(request.getRequestURL());
if (request.getQueryString() != null) {
url.append("|");
url.append(request.getQueryString());
}
response.sendRedirect(url.toString());
return;
}
}
chain.doFilter(servletRequest, servletResponse);
}
发表评论
-
关于Bad version number in .class file的问题
2010-11-15 14:20 1000关于Bad version number in .class ... -
一个获取文件crc32校验码的简洁的java类
2010-05-12 19:48 3273从jdk1.4开始,java核心包里已经提供对crc计算的支持 ... -
Windows下Apache与Tomcat的整合
2010-05-12 13:52 1077为了完成这个任务,在 ... -
SSL双向认证java实现
2010-05-09 11:35 1795本文通过模拟场景,介 ... -
java.util.ResourceBundle 使用详解
2010-04-28 19:39 853一、认识国际化资源文件 这个类提供软件国际化的捷 ... -
基于JAAS实现登录
2010-04-25 22:11 1261JAAS:Java Authentication and ... -
什么是JAAS,以及灵活的Java安全机制
2010-04-25 22:05 1888今天在论坛上看到JASS,不清楚是什么呢,网上找了一下,受益良 ... -
Java插件技术
2010-04-25 21:31 21451.Java插件技术 Java插件技术(Java Plu ... -
java RMI的例子(转)
2010-04-25 21:11 949参考别人的程序后写了个自己的RMI 程序RMI ,远程方法 ... -
Java安全通信、数字证书及应用实践(转)
2010-04-21 21:05 1673摘要 : 在本文 ... -
Eclips 内存溢出
2010-04-13 16:26 1041在Eclipse 根目录下找到eclipse .ini ... -
Eclipse 启动不起来异常:JVM terminated. Exit code=-1
2010-04-11 10:09 7458Eclipse 启动不起来,出现以下错误: ... -
Java程序员需要了解的几个开源协议介绍
2009-12-21 21:32 1118介绍几个比较常见的开 ... -
apache lucene介绍
2009-12-15 09:16 1948什么是lucene Apache Lucene是一个开放源程序 ... -
Java基础:Java中堆内存与栈内存分配浅析
2009-08-11 20:19 1347Java 把内存划分成两种:一种是栈内存,另一种是堆内存 ... -
对synchronized(this)的一些理解
2009-07-23 10:21 1174一、当两个并发线程访问同一个对象object中的这个synch ... -
Linux下JNI调用
2009-07-09 12:43 1459整个实现过程可以分为五步来完成: 1)写一个声明了nativ ... -
如何在Java中执行其它程序
2009-07-09 12:42 2305在编写Java程序时,有时 ... -
linux下jdk的安装与卸载
2009-07-06 10:46 2103下面是卸载步骤: 用ro ... -
JNI技术小试
2009-06-23 14:28 1232目前 java 与 dll 交互的技术主要有 ...
相关推荐
本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...
Java Filter,全称为Servlet Filter,是Java Web开发中的一个重要组件,主要用于处理HTTP请求和响应,提供了一种在请求到达目标Servlet...在实际开发中,灵活运用Filter可以极大地提高代码的复用性和应用程序的灵活性。
本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用这一强大特性。 #### Spring管理Filter与Servlet的必要性 传统的Web应用中,Filter和Servlet的实例化和生命周期管理往往由...
在学习Java Web开发过程中,深入理解并熟练运用Filter是提升项目质量的关键一步。通过实际操作和代码调试,你可以更直观地感受Filter的强大功能和灵活性。记得结合实际项目去实践,这样才能更好地将理论知识转化为...
**JSP权限管理系统filter**是基于Java和JSP技术实现的一种常见的Web应用程序安全控制机制,主要目的是...通过研究"ca.war"项目,开发者可以深入理解如何在实际项目中运用Filter技术来构建一个完整的权限管理解决方案。
**Filter简介** Filter,中文译为过滤器,是Java Servlet技术中的一种重要组件,用于在Servlet容器中拦截请求和响应,实现预处理和后处理...在实际开发中,理解并熟练运用Filter对于构建高效、安全的Web应用至关重要。
在Spring Boot框架中,Filter和Listener是两种非常重要的组件,它们在Web应用程序的生命周期管理和请求处理中起到关键作用。...通过深入理解和熟练运用,我们可以提高应用的灵活性和扩展性,打造高质量的Java Web应用。
这个教程详细介绍了如何安装和使用插件,以及如何调整和组合滤镜效果,对于想要提升游戏视觉质量的开发者来说是一份宝贵的资源。 总的来说,Camera Filter Pack v4.0插件是Unity3D开发中的一款强大工具,它为游戏的...
在"Matlab_filter.pdf"文档中,可能会详细介绍如何使用MATLAB的信号处理工具箱来实现这些滤波器设计,包括设置参数、绘制频率响应图、进行滤波器性能分析等步骤。同时,可能还会涵盖滤波器设计的优化技巧,如阶数...
对于Filter的帮助文档,会详细解释如何配置Filter、编写Filter类、设置过滤规则,以及在实际项目中如何运用Filter来解决特定问题。 7. **NE_Filter_Help.doc**: 这个文件名可能表示这是一个关于NE系列Filter的...
本文将详细介绍Filter Wiz Pro的最新版使用方法,帮助初学者快速入门。 **一、安装与启动** 1. 首先,确保您的计算机系统满足Filter Wiz Pro的硬件和软件要求,通常包括操作系统兼容性(如Windows或Mac OS)以及...
总之,理解并熟练运用Filter是每个Java Web开发者必备的技能之一。通过这个入门例子,你不仅能够学会创建和配置Filter,还能进一步探索如何利用Filter优化你的Web应用。在实践中不断学习和积累,你的Java Web技术会...
在Java Web开发中,Servlet Filter是用于处理HTTP请求和响应的一种机制,它可以拦截请求和响应,在它们到达目标Servlet或JSP之前和之后进行处理。...如果能够访问到这些文件,将更深入地了解Filter的实际运用。
在Java Web开发中,过滤器(Filter)是一个强大的...通过对Filter的熟练运用,开发者可以构建出更加安全、可控的Web应用程序。在实际项目中,可能还需要结合其他安全框架(如Spring Security)来提供更全面的安全保护。
通过理解并熟练运用`Filter`,我们可以更好地定制化Spring Boot应用程序的行为,提升系统的功能性和安全性。在项目中,你可以根据需求创建多个`Filter`,并灵活地调整它们的执行顺序和过滤规则。在Idea中,编写和...
Servlet Filter是Java Servlet API中的一个重要概念,它是对HTTP请求和响应进行拦截处理的机制,用于在请求被实际的Servlet处理之前或之后执行特定的操作...理解并熟练运用Filter,对于提升Java Web开发技能至关重要。
在Java Web开发中,`Filter`(过滤器)是一个至关重要的组件,它允许开发者在请求到达Servlet之前或从Servlet响应返回客户端之前进行拦截...通过理解和熟练运用Filter,开发者可以构建更加健壮和安全的Web应用程序。
ExtJS 是一个强大的JavaScript库,专门用于构建...以上就是关于ExtJS Grid Filter实现表格过滤的基本介绍和应用场景。在实际开发中,根据项目需求,灵活运用各种过滤策略,可以极大地提升数据管理的便捷性和用户体验。
标题中的“osgi session共享 支持springmvc 配置个filter即可”表明我们要讨论的是在OSGi(Open Service Gateway Initiative)环境中,如何通过...同时,合理地运用服务追踪和安全控制是保证系统稳定和安全的关键。
下面将详细解释`Filter`的工作原理以及如何运用它来实现登录验证。 ### Filter工作原理 `Filter`是Java Web应用程序中的一个接口,位于`javax.servlet`包下。它提供了一种机制,可以在HTTP请求被处理前和处理后...