`
prodream
  • 浏览: 102154 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

过滤器的使用场合

    博客分类:
  • J2EE
阅读更多

过滤器可以在请求到达JSP或Servlet之前或响应返回客户端之前添加一些额外的操作。如果有多个JSP页面和Servlet都需要进行一个相同或相似的操作,我们可以把这个操作抽取到一个Servlet过滤器中,并通过匹配路径截获感兴趣JSP或Servlet。

  我们举几个典型的过滤器应用的例子,读者可以推而广之:

  ·编码转换

  乱码问题困扰了不少的Web应用程序开发者,这是因为基于Java的Web应用程序可能运行于不同的Web应用程序器、操作系统平台或硬件服务器上,不同的环境有自己默认的编码类型,在数据的转换过程中不同的默认编码是乱码问题的始作俑者,所以在开发JSP时常常需要将数据进行编码转换。我们可以创建一个Servlet过滤器在请求进入服务程序前都进行编码转换。

  ·添加统一的标题或脚注

  有些网页需要添加统一的标题头或脚注,可以通过Servlet过滤器在响应返回到客户端前给网页添加上统一的标题和脚注。

  ·进行安全的控制

  登录系统后,一般都会将用户信息对象放入到session中,可以通过Servlet过滤器在请求进入JSP或Servlet前判断session中是否有用户信息对象,如果有,则说明用户已经登录,如果没有,则说明用户还没有登录,将请求重定向到登录页面。

过滤器例:

1. package bookstore.servlet;
2. …
3. public class LoginCheckFilter
4. extends HttpServlet implements Filter
5. {
6.  …
7.  public void doFilter(ServletRequest request, ServletResponse response
8.      , FilterChain filterChain)
9.  {
10.  try
11.  {
12.   //进行请求和响应的类型转换
13.   HttpServletRequest httpRequest = (HttpServletRequest) request;
14.   HttpServletResponse httpResponse = (HttpServletResponse) response;
15.
16.   boolean isValid = true;
17.   String uriStr = httpRequest.getRequestURI().toUpperCase();
18.   if (uriStr.indexOf("LOGIN.JSP") == -1 &&
19.     uriStr.indexOf("SWITCH.JSP") == -1 &&
20.     httpRequest.getSession().getAttribute("ses_userBean") == null)
21.   {
22.    isValid = false;
23.   }
24.   if (isValid)
25.   {
26.    filterChain.doFilter(request, response);
27.   } else
28.   {
29.    httpResponse.sendRedirect("/webModule/login.jsp");
30.   }
31.
32.  } catch (ServletException sx)
33.  {
34.   filterConfig.getServletContext().log(sx.getMessage());
35.  } catch (IOException iox)
36.  {
37.   filterConfig.getServletContext().log(iox.getMessage());
38.  }
39. }
40. …
41. }

在web.xml中配置如下:

1. <web-app>
2.  <display-name>webModule</display-name>
3.  <filter>
4.   <filter-name>logincheckfilter</filter-name>
5.   <filter-class>bookstore.servlet.LoginCheckFilter</filter-class>
6.  </filter>
7.  <filter-mapping>
8.   <filter-name>logincheckfilter</filter-name>
9.   <url-pattern>/*</url-pattern>
10.  </filter-mapping>
11.  …
12. </web-app>

<filter-name>配置过滤器的名字和实现类,而<filter-mapping>配置过滤器的路径匹配模式。

分享到:
评论

相关推荐

    布隆过滤器之C++实现

    做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否在某个字典内,当集合很大的时候,用布隆过滤器很有优势,不过使用前,请了解它的优缺点(缺点是有一定的误判率)

    过滤器与监听器

    Web页面的过滤与监听 了解Filter基本概念和适用场合 掌握使用Filter的基本步骤 会定义和使用Filter 掌握全局对象监听器的使用和应用 掌握会话对象监听器的使用和应用

    Servlet过滤器

    详细的分析了Servlet过滤器的作用和使用场合,以及常见步骤

    自动卷绕式空气过滤器的优化设计

    分析了自动卷绕式空气过滤器的应用场合及工作环境,进行了过滤器的结构及控制方式的优化设计,实现了过滤器的产品标准化、系列化,操作方便化,控制多样化,日常保养"零维护",安全可靠,运行经济。

    具有错误检测和纠正功能的基于Bloom过滤器的数据管理-研究论文

    当要使用固定成员和快速成员身份时,使用布隆过滤器来减少网络和计算应用程序中的延迟。 错误源可能会对布隆过滤器的行为产生影响,从而导致该成员资格测试的最终结果错误,并可能对设备输出产生影响。 单次瞬态是...

    布隆过滤器简介1

    1. 存储空间和插/查询时间都是常数,远远超过般的算法 2. Hash函数相互之间没有关系,便由硬件并实现 3. 不需要存储元素本,在某些对保密要求常严格的场合

    smc-新款过滤器AF10~60系列.pdf

    全新新款SMC过滤器一般比非金属弹性元件挠性联轴器的使用寿命长。需密封润滑和使用不耐久的联轴器,必然增加维护工作量。对于长期连续运转和经济效益较高的场合,例如我国冶金企业的轧机传动系统高速端,目前普遍...

    详解AngularJS中的filter过滤器用法

    主要介绍了AngularJS中的filter过滤器用法,包括其在模版中和在controller以及service的常见应用场合,需要的朋友可以参考下

    RedisBloom-master.zip

    隆过滤器是Burton Howard Bloom在1970年提出来的,一种空间效率极高的概率型算法和数据结构,主要用来 判断一个元素是否在集合中存在。因为他是一个概率型的算法,所以会存在一定的误差,如果传入一个值去布隆过 ...

    ABP开发指南

    3.4 ABP领域层—数据过滤器 58 3.4.1 介绍 58 3.4.2 预定义过滤器 58 3.4.3 禁用过滤器 60 3.4.4 启用过滤器 61 3.4.5 设定过滤器参数 62 3.4.6 自定义过滤器 62 3.4.7 其它对象关系映射工具 64 3.5 ABP领域层—领域...

    泡沫塑料衬垫分配系统采用PC控制技术降低了系统成本,减少了布线时间.pdf

    泡沫塑料衬垫分配系统采用PC控制技术降低了系统成本,减少了布线时间pdf,泡沫塑料衬垫分配系统采用 PC 控制技术降低了系统成本,减少了...公司主要供应针对各种应用(如控制柜、过滤器或医疗设备)的衬垫的生产设备。

    E H 浊度(浓度)测量系统.pdf

    E H 浊度(浓度)测量系统pdf,E H 浊度(浓度)测量系统应用领域:在以下场合浊度测量是确定水质必不可少的参数,同时也是重要的控制变量:饮用水生产的各过程,凝结和絮凝过程,过滤器破裂监测,过滤器反冲流监测,冲洗水的...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密Struts2高级技术 9.1 本章学习任务 9.1.1 本章知识体系 9.1.2 实例开发任务 9.2 OGNL表达式...

    smc-新款油雾器AL10~60.pdf

    油雾器安装在空气过滤器和减压阀之后,进出口方向不得反响以免失去油雾功能,安装不能倾斜,以免油粘附在滴油器上,看不见油滴。 3).油雾器必须及时补油,确保油面位于油雾器所规定的上下限之间。补油时科在不停气...

    网页吸尘器

    这特别适合学校,家庭和某些专业应用场合使用,可以彻底杜绝用户访问不该访问网站的忧虑! *先进的智能判断算法 网页吸尘器采用特殊的数学模糊判断算法,根据多种因素智能判断网页是否该屏蔽,成功率在98%以上。...

    Java性能优化之使用NIO提升性能(Buffer和Channel)

    这种基于流的实现以字节为单位处理数据,并且非常容易建立各种过滤器。NIO是NewI/O的简称,具有以下特性:为所有的原始类型提供(Buffer)缓存支持; 使用java.nio.charset.Charset作为字符集编码解码解决方案;

    Friso高性能中文分词器框架源码.rar

    Friso 是使用 c 语言开发的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了php5, php7, ocaml, lua的插件实现。源码无需修改就...

    集体智慧编程中文版

    真实的航班搜索 涉及偏好的优化 网络可视化 其他可能的应用场合 练习 第6章 文档过滤 过滤垃圾信息 文档和单词 对分类器进行训练 计算概率 朴素分类器 费舍尔方法 将经过训练的分类器持久化 过滤博客订阅源 对特征...

    乐秀录屏大师乐秀录屏大师 中文多语免费版.zip

    – 时尚过滤器:我们提供流行的过滤器,如平滑/美白/苗条/女神/自然,使您的视频独特。 – 可爱的贴纸:有趣的贴纸/ GIF /模因/表情符号主题,你可以制作一个流行的视频,简单的步骤rec屏幕。 – 单调的主题:我们有...

Global site tag (gtag.js) - Google Analytics