Servlet过滤器(Filter)介于与之相关的Servlet和或sp页面和客户之间,即:客户端—》Filter—》servlet或jsp。在《Servlet和JSP的关系以及此关系在Tomcat中的》中已简阐述了servlet和jsp的关系。本篇简要介绍下Filter的作用、对比下它与Servlet的创建过程以及Filter的简单使用!
开发web application 经常会遇到如下情况:
1、访问特定资源(Web 页、JSP 页、servlet)时的身份认证
2、应用程序级的访问资源的审核和记录
3、应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上
4、对被访问资源的及时转换, 包括从 servlet 和 JSP 的动态输出
而这些就是Filter能够处理的事情了,也由此我们可以将Filter分为如下几类:
1、用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。
2、日志Filter:详细记录某些特殊的用户请求。
3、负责解码的Filter:包括对非标准编码的请求解码。
4、能改变XML内容的XSLT Filter等。
通过上述介绍我们可以看出,Filter是个典型的处理链,它可以执行servlet之前和之后进行一番处理,并且可以有多个Filter配套使用。而它是在servlet2.3中提出的,其创建和使用过程与Servlet的创建和使用过程类似!分别包括如下两个过程:
servlet:1、创建servlet处理类(一般要实现doGet、doPost或service方法);2、配置web.xml文件(配置servlet标签和servlet-mapping标签)
Filter: 1、创建Filter处理类(要实现init、doFilter和destroy方法); 2、配置web.xml文件(配置filter标签和filter-mapping标签)
servlet举例参见《Servlet和JSP的关系以及此关系在Tomcat中的》,下面简单举例Filter,实现在访问jsp时设置字符集。
Filter处理类代码如下:
filter配置如下:
其调用过程如下图所示:<!--
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
-->
通过上述介绍,可以清楚filter可以在访问jsp或servlet之前和之后做一些事情。其实质是拦截了request和response两个请求,具体操作可以参见上述代码
中的27-31行。filter的优点除了可以解决上述面临的问题外,还有一点是做软件值得借鉴的地方,这便是filter是可“插拔的”,只需要对配置文件进行更改不
需要改动其他代码,便可以决定使用filter与否和一些参数等的设置非常灵活!
分享到:
相关推荐
Servlet中Filter判断是否是ajax请求源码
JavaWeb Servlet中Filter过滤器的详解 1.简述 Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查...
Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试Servlet Filter 的单元测试
简单的servlet+Filter的例子,简单的结合这两个的例子。
详细的解释了servlet filter listener 额知识,本文档适合初学者阅读
servlet之Filter使用范例--登陆验证,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45480101
编写 Servlet 并添加两个 Filter,并确保在 Servlet 执行之前和之后执行这些 Filter。 以下是实现此目的的步骤: 首先,创建一个 Java Web 项目并添加必要的库和依赖项,以便可以编写 Servlet 和 Filter。 创建一个...
JSP 演示代码 技术:JSP Servlet JavaBean Filter 实现:过滤器实现权限登录功能。
模仿servlet 的filter写的,拦截器涉及模式的具体实现
Servlet之Filter深入讲解及实例研究 ,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/45480101
Spring 管理filter 和servlet
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,...基于Jsp+Tomcat+Servlet+Filter的超市管理系统源码+数据库.zip
javax.servlet.Filter.class javax.servlet.FilterConfig.class javax.servlet.ServletRequestAttributeListener.class javax.servlet.ServletRequestAttributeEvent.class javax.servlet.GenericServlet.class ...
servlet,lisenter ,filter 例子
jsp servlet中的过滤器Filter配置总结 1。如果要映射过滤应用程序中所有资源: <filter> <filter-name>loggerfilter</filter-name> <filter-class>myfilter.LoggerFilter</filter-class> </filter> <filter-...
关于filter、servlet在web.xml配置及加载顺序