过滤的实现
调用链
所有过滤器都服从调用的过滤器链,并通过定义明确的接口得到执行。一个执行过滤器的 Java 类必须执行这一 javax.servlet.Filter 接口。这一接口含有三个过滤器必须执行的方法:
doFilter(ServletRequest, ServletResponse, FilterChain):这是一个完成过滤行为的方法。这同样是上游过滤器调用的方法。引入的FilterChain对象提供了后续过滤器所要调用的信息。
init(FilterConfig):这是一个容器所调用的初始化方法。它保证了在第一次doFilter()调用前由容器调用。您能获取在 web.xml 文件中指定的初始化参数。
destroy():容器在破坏过滤器实例前,doFilter()中的所有活动都被该实例终止后,调用该方法。
嵌套调用在 doFilter() 方法执行中发生。除非您建立一个过滤器明确阻止所有后续处理(通过其它过滤器及资源处理器),否则过滤器一定会在 doFilter 方法中作以下的调用:
FilterChain.doFilter(request, response);
安装过滤器:定义与映射
容器通过 Web 应用程序中
的配置描述符 web.xml 文件了解过滤器。有两个新的标记与过滤器相关:<filter> 和 <filter-mapping>。应该指定它们为 web.xml 文件内 <web-app> 标记的子标记。
过滤器定义的元素
<filter> 标记是一个过滤器定义,它必定有一个 <filter- name> 和 <filter-class> 子元素。<filter-name> 子元素给出了一个与过滤器实例相关的、基于文本的名字。<filter-class> 指定了由容器载入的实际类。您能随意地包含一个 <init-param> 子元素为过滤器实例提供初始化参数。例如,下面的过滤器定义指定了一个叫做 IE Filter 的过滤器:
1.首先写一个权限过滤filter类,实现Filter接口
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
public class RightFilter
implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
//从session里取的用户名信息
String username = (String) session.getAttribute("username");
//判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username)) {
//跳转到登陆页面
res.sendRedirect("http://"+req.getHeader("Host")+"/login.jsp");
}
else {
//已经登陆,继续此次请求
chain.doFilter(request,response);
}
}
public void destroy() {
}
}
2.然后在web.xml里配置需要登陆权限验证的JSP文件:
a.如果是某个具体的JSP文件(如a.jsp)需要登陆验证
<web-app>
<filter>
<filter-name>right</filter-name>
<filter-class>com.taihuatalk.taihua.common.RightFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/a.jsp</url-pattern>
</filter-mapping>
</web-app>
b.如果是某一个目录(如a/目录)整个目录下的文件都需要登陆验证:
<web-app>
<filter>
<filter-name>right</filter-name>
<filter-class>com.taihuatalk.taihua.common.RightFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/a/**//*</url-pattern>
</filter-mapping>
</web-app>
分享到:
相关推荐
### 基于贝叶斯算法的JavaMail垃圾邮件过滤实现 #### 1. 引言 随着互联网的发展,电子邮件成为人们日常生活中不可或缺的一部分。然而,垃圾邮件问题日益严重,尤其是对于那些公开发布邮箱地址的企业而言,垃圾邮件...
机器学习作业-垃圾邮件过滤实现源代码.zip,含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该系统功能...
协同过滤(Collaborative Filtering,简称CF)是一种广泛应用于推荐系统...总之,基于MapReduce的协同过滤实现是处理大规模推荐数据的有效方法,通过分布式计算解决了数据量大的问题,提高了推荐系统的性能和可扩展性。
《基于语言的协同过滤实现——探索与应用》 在当今的大数据时代,推荐系统已经成为个性化服务的核心技术之一,其中协同过滤是最为常见的推荐算法。本文将深入探讨如何在MATLAB环境中实现基于语言的协同过滤方法,以...
机器学习作业-垃圾邮件过滤实现+源代码+文档说明+数据集,含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,...
基于Mahout协同过滤实现图书推荐系统_书籍推荐系统源码+项目说明.zip 基于协同过滤的书籍推荐系统,图书推荐系统 最新版本,在原先手动计算皮尔逊相似度和评分矩阵的基础上添加了Mahout实现的协同过滤推荐算法. ...
在这个“基于Mahout协同过滤实现图书推荐系统”中,开发者可能利用了这些工具来处理用户-用户或物品-物品的相似度计算,并生成推荐列表。 源码通常包含以下几个关键部分: 1. 数据预处理:导入用户-书籍评分数据,...
Elasticsearch(ES)多条件过滤实现案例(6.3版本), 搜索过滤,对日期进行时分秒区间判断,多条件整合优化
Elasticsearch(ES)多条件过滤实现案例(2.3.3版本),POST代码,查询过滤,多种条件。
在C#编程中,敏感词过滤是一个常见...总的来说,C#敏感词过滤实现涉及到字符串处理、数据结构(字典)和算法(顺序查找)。通过合理的设计和优化,可以有效地实现在大量文本中的敏感词过滤,保证应用的安全性和合规性。
本篇将详细介绍如何使用DFA(Deterministic Finite Automaton,确定有限状态自动机)算法实现高效敏感词过滤。 DFA是一种状态机模型,它由一组状态、一个起始状态、一组输入符号以及在状态之间基于输入符号的转移...
优秀毕业设计_基于协同过滤实现的音乐推荐系统_附项目源码_优质项目实战
以下是关于这个Java敏感词过滤实现的详细知识讲解。 首先,我们要理解敏感词过滤的基本原理。通常,敏感词过滤系统会维护一个敏感词库,包含各种禁止或限制使用的词汇。当输入的字符串被检查时,系统会遍历每个单词...
优秀毕业设计_基于用户画像+协同过滤实现的音乐推荐系统_附项目源码_优质项目实战
现在网站广告太多,考虑使用自己的定制浏览器实现flash以及大图片的过滤,很多过滤只是不显示,实际上还有下载,后来看到了flash、图片终极过滤和网页过滤技术,可惜源码不能下载,后来查阅到CodeProject网站的一个...
**IEHelper:实现简单网址过滤** 在互联网世界中,网址过滤是一种重要的技术,它用于限制或控制用户访问特定类型的网站,比如为了保护儿童免受不适宜内容的影响,或者在企业环境中确保员工不会偏离工作相关网站。`...
基于中间层驱动的个人防火墙实现,包括ndis实现的框架,对网络包过滤的实现。
在本实例中,我们将探讨如何使用 PySpark(Python 接口)实现基于 MLlib 的协同过滤推荐算法——交替最小二乘法(Alternating Least Squares, ALS),用于用户和物品的推荐。 协同过滤是推荐系统中最常用的方法之一...