JSP Filter的应用方法
2013-04-22 00:00
225 查看
Servlet有一个很有意思也很有用的功能,就是Filter。 所谓Filter,就是在用户请求到达 Servlet 之前、或者 Servlet 执行之后, 执行的一段小程序,这段程序可以对用户请求做预处理, 或者对Servlet返回的结果进行一些公用处理。
Filter可以在请求到达 Servlet 之前执行, 甚至即使请求一个静态页面或图片等,Filter也会被优先执行。 这样我们可以通过Filter对应用程序内的所有对象(包括Java程序和静态内容)进行预处理。 (这个功能恐怕PHP程序就无法做到了。)
Filter通常可用于以下几种情况:
•认证
•记录访问日志
•加密解密
•字符编码转换
•数据压缩
如上面最常用的“认证”,可以在Filter中书写认证代码, 这样不仅省却了在Servlet中认证的麻烦,而且还能控制网站中静态内容的访问。
Filter是个接口,位于 javax.servlet.Filter。它与其他接口的关系如下:
我们在书写自己的Filter时,只需写一个类实现 Filter 接口即可。
实现Filter接口需要实现以下几个方法:
Filter的初始化方法。
Filter结束之前执行的方法。
Filter的执行内容。参数request和response分别为输入和输出参数,而chain则为Filter链对象。
所谓FilterChain,一个应用程序内的Filter可以有多个,它们像链子一样串在一起, 其中的某个Filter执行之后,可以调用chain.doFilter(request, response)将执行权转给下一个Filter, 直到所有的Filter都执行完毕。
这次的示例程序我们修改了上一节的登录程序, 为它增加了一个下载链接(详见SessionTest.java)。 这个下载链接指向 img/sample.jpg。 我们希望能通过一个Filter,在用户试图下载 img/sample.jpg 时验证用户身份, 如果验证失败,则禁止用户下载,并跳转到登录页面。
创建Filter时可惜不能像Servlet那样,直接从右键菜单中选择新建, 而只能先写好源代码然后手工添加到web.xml中。 如下图,在新建类时注意要实现javax.servlet.Filter接口。
写完代码之后,打开web.xml文件,手工添加Filter。与Servlet类似,你需要添加 和 两个标记。这里我们要对 /img/ 下的所有文件进行登录验证, 因此的 url-pattern 处我们填写了 /img/* 。
最后执行,访问 /LearnJSP/img/sample.jpg ,就会跳转到登录页面。 登录之后再次访问上面的链接,才能看到正确的图片。
示例下载:servlet-filter_jb51net.zip
Filter可以在请求到达 Servlet 之前执行, 甚至即使请求一个静态页面或图片等,Filter也会被优先执行。 这样我们可以通过Filter对应用程序内的所有对象(包括Java程序和静态内容)进行预处理。 (这个功能恐怕PHP程序就无法做到了。)
Filter通常可用于以下几种情况:
•认证
•记录访问日志
•加密解密
•字符编码转换
•数据压缩
如上面最常用的“认证”,可以在Filter中书写认证代码, 这样不仅省却了在Servlet中认证的麻烦,而且还能控制网站中静态内容的访问。
Filter是个接口,位于 javax.servlet.Filter。它与其他接口的关系如下:
我们在书写自己的Filter时,只需写一个类实现 Filter 接口即可。
实现Filter接口需要实现以下几个方法:
void init(FilterConfig filterConfig) throws ServletException
Filter的初始化方法。
void destroy()
Filter结束之前执行的方法。
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
Filter的执行内容。参数request和response分别为输入和输出参数,而chain则为Filter链对象。
所谓FilterChain,一个应用程序内的Filter可以有多个,它们像链子一样串在一起, 其中的某个Filter执行之后,可以调用chain.doFilter(request, response)将执行权转给下一个Filter, 直到所有的Filter都执行完毕。
这次的示例程序我们修改了上一节的登录程序, 为它增加了一个下载链接(详见SessionTest.java)。 这个下载链接指向 img/sample.jpg。 我们希望能通过一个Filter,在用户试图下载 img/sample.jpg 时验证用户身份, 如果验证失败,则禁止用户下载,并跳转到登录页面。
创建Filter时可惜不能像Servlet那样,直接从右键菜单中选择新建, 而只能先写好源代码然后手工添加到web.xml中。 如下图,在新建类时注意要实现javax.servlet.Filter接口。
写完代码之后,打开web.xml文件,手工添加Filter。与Servlet类似,你需要添加 和 两个标记。这里我们要对 /img/ 下的所有文件进行登录验证, 因此的 url-pattern 处我们填写了 /img/* 。
最后执行,访问 /LearnJSP/img/sample.jpg ,就会跳转到登录页面。 登录之后再次访问上面的链接,才能看到正确的图片。
示例下载:servlet-filter_jb51net.zip
相关文章推荐
- JSP Filter的应用方法
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(十五)——JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语
- JSP中EL表达式的应用以及常用的方法
- Controller应用ModelAndView后几种向JSP传参方法
- filter只过滤jsp不过滤action解决方法
- JSP中EL表达式的应用以及常用的方法
- JSP中EL表达式的应用以及常用的方法
- 解决AJAX应用,会话超时(Session Timeout)的问题,粗略方法(不考虑使用Filter的前提下)
- JSP 开发中过滤器filter设置编码格式的实现方法
- js中数据join方法的应用与jsp中StringTokenizer方法的应用
- JSP中EL表达式的应用以及常用的方法
- 通过实例讲解Java_ Filter我们常见的应用方法
- jsp中使用JSTL标签自动生成编号的方法(varStatus的应用)(转)
- JSP实现分页效果!(构造方法强大应用啊~~)
- jsp urlwritefilter应用
- JSP应用之Filter与Listener
- JSP中Filter的简单应用
- 【转】在ASP.NET应用启动的时候初始化的几种方法
- Android开发-POST方法连接服务器(Servlet)-应用例程
- CMakeup应用中的错误,此方法能用,已经验证,谢谢这位大哥!!!