又是新的{yt},今天我将复习过滤器的具体应用,昨天我们将了一些关于过滤器的基本知识,现在我们已经有了一些过滤器的基本知识。现在我们就可以在这些基础知识上加以应用。我们在应用中经常使用过滤器中实现以下功能:可以对客户提交的数据进行重新编码;使浏览器不缓存页面的过滤器;可以过滤掉客户的屏蔽非法文字;可以验证客户是否已经登录。现在我们看看如何实现以上功能。
首先我们看看如何通过过滤器实现对客户提交的数据进行重新编码。如果我们不使用过滤器,我们要对客户提交的数据进行重新编码就必须在servlet或者jsp中手动指定字符集的编码,我们可以使用:request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");但是这样我们必须在每个servlet和jsp中加入该代码,如果我们需要改字符集编码,我们必须在每个servlet或者jsp替换代码,这样相当的麻烦。这样我们就可以使用过滤器来实现:我们可以再过滤器的doFilter中实现以上代码,这样就更方便。
使浏览器不缓存页面的过滤器:有 3 个 HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet 中的示例代码如下:设定网页的到期时间,一旦过期则必须到服务器上重新调用response.setDateHeader("Expires",-1);
Cache-Control指定请求和响应遵循的缓存机制
//是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出response.setHeader("Pragma","no-cache");
并不是所有的浏览器都能xx支持上面的三个响应头,因此{zh0}是同时使用上面的三个响应头。
检测用户是否登陆的过滤器:情景:系统中的某些页面只有在正常登陆后才可以使用,用户请求这些页面时要检查 session 中有无该用户信息,但在所有必要的页面加上session的判断相当麻烦的事情解决方案:编写一个用于检测用户是否登陆的过滤器,如果用户未登录,则重定向到指定的登录页面。要求:需检查的在 Session 中保存的关键字; 如果用户未登录,需重定向到指定的页面(URL不包括 ContextPath); 不做检查的URL列表(以分号分开,并且 URL 中不包括ContextPath)都要采取可配置的方式。
为论坛过滤不雅文字和HTML特殊字符。开发论坛模块时要解决以下两个问题:
1. 用户回复或发帖时可能会输入 HTML 代码(例如:<, >等),这可能会破坏论坛的正常显示,也可能会带来安全隐患。
2. 某些用户在回复时可能会输入不雅子句,这些子句会给论坛带来不好的影响
3. 实现对不雅文字的可配置
我们可以再过滤器的doFilter方法中对获取的内容进行替换,但是request中的内容是不能手动改变的,所以我们要实现一个继承HttpServletRequestWrapper。Servlet API 中提供了一个 HttpServletRequestWrapper 类来包装原始的 request 对象, HttpServletRequestWrapper 类实现了 HttpServletRequest 接口中的所有方法,这些方法的内部实现都是仅仅调用了一下所包装的的 request 对象的对应方法。相类似 Servlet API 也提供了一个 HttpServletResponseWrapper 类来包装原始的 response 对象。我们可以通过这个类来替换过滤前的内容。
过滤器在我们以后的应用中起到了很大的作用,希望以后能学到更多关于过滤器的知识,那么今天就到这了。
已投稿到: |
|
---|