公主她爹的网窝
BlogJava
首页
新文章
新随笔
聚合
管理
posts - 19, comments - 4, trackbacks - 0
Servlet Flter简介
Servlet filter简介
本篇文章只是一篇学习笔记,其中参考了许多文章。
一:简介
filter(过滤器)是servlet2.3中增加的一个新功能,filter可以改变一个请求(request)或者是修改响应(response)。filter不是一个servlet,它只是一个servlet接受到请求前的预处理器。就是说,用户发送一个请求给servlet时,在servlet处理之前,这个filter首先执行,然后才是servlet的执行。
二:作用
filter可以用在下面几个方面
1:访问特定资源(Web 页、JSP 页、servlet)时的身份认证
2:访问资源的记录
3:访问资源的转换
三:编写filter
一个filter 必须实现javax.servlet.Filter 接口,即实现下面的三个方法:
1:void init(FilterConfig config) throws ServletException: 初始化方法
2:void destroy():
3:void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException: 完成具体的过滤工作。
四:示例
示例一:限制访问资源
我们以参考文献1中的第一个例子介绍怎样限制用户访问特定的资源
在那个例子中,对浏览器为IE的用户做了限制,原文讲的很清楚,关键代码如下:
CODE
1
import
java.io.
*
;
2
import
javax.servlet.
*
;
3
import
javax.servlet.http.
*
;
4
5
public
final
class
IEFilter
implements
Filter
{
6
7
private
FilterConfig filterConfig
=
null
;
8
9
public
void
doFilter(ServletRequest request, ServletResponse response,
10
FilterChain chain)
11
throws
IOException, ServletException
{
12
String browserDet
=
((HttpServletRequest) request).getHeader(
"
User-Agent
"
).toLowerCase();
13
14
if
( browserDet.indexOf(
"
msie
"
)
!=
-
1
)
{
15
PrintWriter out
=
response.getWriter();
16
out.println(
"
<html><head></head><body>
"
);
17
out.println(
"
<h1>Sorry, page cannot be displayed!</h1>
"
);
18
out.println(
"
</body></html>
"
);
19
out.flush();
20
return
;
21
}
22
23
chain.doFilter(request, response);
24
25
}
26
27
public
void
destroy()
{
28
}
29
30
public
void
init(FilterConfig filterConfig)
{
31
this
.filterConfig
=
filterConfig;
32
}
看看doFilter的参数可知,利用request和response我们可以对做各种处理。例如可以通过ServletRequest类的getRemoteAddr()方法得到访问这个应用的客户端ip,然后对这个ip作一些处理,如果不符合条件,可以限制访问。这样可以很好的保护应用。
示例二:资源转换
参考文献一中的第二个例子演示了怎样将用户要访问的资源进行转换。
示例三:访问记录
类似于一个跟踪程序,参考文献二中的第二个例子演示了怎样记录用户访问的所有属于同一个应用的资源。
五:配置
以tomcat为例:每个使用filter的应用的web.xml类似下面
CODE
1
<
web-app
>
2
<
filter
>
3
<
filter-name
>
Filter
</
filter-name
>
//这里是Filter的名字,随便你怎么起
4
<
filter-class
>
FilterClass
</
filter-class
>
//Filter的类名,注意包含package
5
</
filter
>
6
7
<
filter-mapping
>
8
<
filter-name
>
Filter
</
filter-name
>
//与上面的保持一致
9
<
url-pattern
>
/*
</
url-pattern
>
//对所有资源应用此filter
10
</
filter-mapping
>
11
</
web-app
>
如果一个应用有多个Filter,则在web.xml文件中,<filter-mapping>靠前的filter先执行。
六:测试
可以把参考文献一和二中的代码中的war文件放到tomcat\webapp目录下,启动tomcat,用类似http://localhost:8080/clickstream(此乃文献二中第二个例子的访问方法)访问。
这只是一篇笔记,要想真正理解filter,建议读下面两篇文章。
参考文献
1:Tomcat 的过滤诀窍
2:Filter code with Servlet 2.3 model
posted on 2007-01-05 13:44
公主她爹
阅读(325)
评论(0)
编辑
收藏
所属分类:
Servlet Filter
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
功能强大的 Servlet Filter 完整源代码
servlet filter
javax.servlet.Filter 的应用
servlet和JSP过滤器Filter
Servlet Flter简介
<
2007年1月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(19)
Ant(4)
Eclipse相关(3)
JavaScript(1)
Java技术(3)
Servlet Filter(5)
Struts(1)
其他收藏(1)
学习Spring(1)
胡说九道
随笔档案
(19)
2007年1月 (14)
2006年12月 (5)
相册
公主玉照
娱乐网站
中文爱百科
优酷微视频 - 世界都在看
六间房
宝贝妞的网窝
猫扑
技术网站(Java)
CSDN
IBM developerWorks 中国
JavaEye-最棒的软件开发交流社区
Java中文博览
Java家
Java开源大全
Java开源平台
Java爱好者
Java资源网
J道
myeclipse
SpringFramework中文论坛
Spring框架下载
中国Java开发网
中文Java技术网
中文Web开发网
搜索
最新评论
1. re: 网页调用IE浏览器的打印功能
的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 顶顶顶的顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
--才匆匆
2. re: javax.servlet.Filter 的应用
很好
--qcghdy
3. re: 先进的开发框架—理解什么是Spring
内容太详细了,容易理解,写的不错....谢谢
--re
4. re: 先进的开发框架—理解什么是Spring
难啊
--得到
阅读排行榜
1. Struts Nested 标签库(1327)
2. 先进的开发框架—理解什么是Spring (1039)
3. javax.servlet.Filter 的应用 (581)
4. eclipse中struts配置(558)
5. 功能强大的 Servlet Filter 完整源代码(520)
评论排行榜
1. 先进的开发框架—理解什么是Spring (2)
2. javax.servlet.Filter 的应用 (1)
3. 网页调用IE浏览器的打印功能(1)
4. servlet和JSP过滤器Filter(0)
5. Servlet Flter简介(0)