Servlet规范中所引入的filter令人心动不已,因为它引入了一个功能强大的拦截模式。Filter是这样一种Java对象,它能在request到达servlet的服务方法之前拦截HttpServletRequest对象,而在服务方法转移控制后又能拦截HttpServletResponse对象。你可以使用filter来实现特定的任务,比如验证用户输入,以及压缩web内容。但你拟富有成效地使用过滤器的念头却被你不能改变HttpServletRequest对象的参数的现实扫了兴,因为java.util.Map所包装的HttpServletRequest对象的参数是不可改变的。这极大地缩减了filter的应用范围。至少在一半的时间里,你希望可以改变准备传送给filter的对象。如果在HttpServletRequest对象到达Struts的action servlet之前,我们可以通过一个filter将用户输入的多余空格去掉,难道不是更美妙吗?这样的话,你就不必等到在Struts的action表单验证方法中才进行这项工作了。

幸运的是,尽管你不能改变不变对象本身,但你却可以通过使用装饰模式来改变其状态。

现在,让我们来看看,如何编写自己的HttpServletRequest装饰类。

一个删除空白字符的Filter

本节将以上的理论投入实际使用,通过实现一个删除空白字符的filter,来演示如何使用javax.servlet.http.HttpServletRequestWrapper类来装饰HttpServletRequest对象。在本例中,这个filter将删除所传来的参数中多余的空白字符。

这在许多servlet/JSP应用中是很有用的,包括Struts及JavaServer Faces等应用。例如,Struts通过调用HttpServletRequest对象的getParameterValues()对象来处理action表单。通过覆盖装饰类中此方法,你可以改变当前HttpServletRequest对象的状态。

要创建HttpServletRequest的装饰类,你需要继承HttpServletRequestWrapper并且覆盖你希望改变的方法。列表5中,MyRequestWrapper类将删除getParameterValues()方法返回值的多余空白字符。

列表5:HttpServerletRequest装饰类

程序代码:

package trimmer.filter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletRequestWrapper;

public final class MyRequestWrapper extends HttpServletRequestWrapper {

public MyRequestWrapper(HttpServletRequest servletRequest) {

super(servletRequest);

}

public String[] getParameterValues(String parameter) {

String[] results = super.getParameterValues(parameter);

if (results == null)

return null;

int count = results.length;

String[] trimResults = new String[count];

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-25526-1.html

serverlet 原理_serverlet_servlet工作原理面试题_serverlet和jsp相关推荐

  1. serverlet 原理_serverlet_servlet工作原理面试题_serverlet和jsp(3)

    小结 Servlet filter可以在调用一个servlet的服务方法后,拦载或加工HTTP请求.尽管这非常诱人,但其实际使用却有所限制,因为你不能改变HttpServletRequest对象.se ...

  2. kafka分区与分组原理_Kafka工作原理

    Kafka工作原理 Kafka工作原理 4.1. topic和消息 4.2. Producer 4.3. Consumer 4.4. Kafka核心特性 4.5. consumer.consumer ...

  3. bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...

    bootloader功能介绍 初始化开发板上主要硬件(时钟,内存,硬盘), 把操作系统从硬盘拷贝到内存,然后让cpu跳转到内存中执行操作系统. boot阶段 1.关闭影响CPU正常执行的外设 -关闭看 ...

  4. 冯诺依曼原理计算机称为,冯·诺依曼提出的计算机工作原理又称为 工作原理。...

    冯·诺依曼提出的计算机工作原理又称为 工作原理. 更多相关问题 Y211是一种靠液压动力坐封的封隔器,而Y441或Y445是一种靠机械坐封的封隔器. 美容心理诊断对美容医学的意义 肾功能不全的老年患者 ...

  5. 太阳能电池板原理及工作原理

    本文转载于: http://www.go-gddq.com/html/NYLiYHeHuiShou/2013-04/1117691.htm 太阳能电池板原理及工作原理 随着全球能源日趋紧张,太阳能成为 ...

  6. 电热水器工作过程 c语言,电热水器工作原理—电热水器工作原理及使用注意事项介绍...

    电热水器现在已经成为了一种最为受到消费者喜爱的热水设备,而在我们大家购买电热水器的时候,并不是很了解电热水器,所以今天小编就来为大家介绍一下电热水器的一些工作原理及一些使用中的注意事项,希望可以帮助大 ...

  7. 电子邮件服务器的工作原理,电子邮件工作原理 电子邮件有什么特点呢

    电子邮件是交流信息的一种通信方式,可以用来传输文件和图片,还是非常方便的.很多人对电子邮件的工作原理感到好奇,电子邮件工作原理是怎样的?电子邮件有什么特点呢? 电子邮件工作原理 电子邮件工作原理 电子 ...

  8. [JavaScript][AJAX]onreadystatechange事件;AJAX含义及组成部分;AJAX工作原理/HTTP工作原理;一个页面从输入url到呈现网页过程;FormData对象;防抖

    目录 onreadystatechange事件 AJAX含义及组成部分 AJAX工作原理/HTTP工作原理 一个页面从输入url到呈现网页过程 TCP三次握手图示 渲染引擎渲染网页流程图 ​编辑 Fo ...

  9. 了解WiFi的原理、工作原理以及相关的标准。

    Wi-Fi 是 Wireless Fidelity 的缩写,是无线局域网 (WLAN) 的一种常用技术.它使用频率为 2.4GHz 和 5GHz 的高频电波传送数据. Wi-Fi 工作原理: 发送端: ...

最新文章

  1. Android获取手机短信
  2. Nginx-rtmp直播之业务流程分析--比较详细
  3. C语言中#define中的一些特殊用法
  4. linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...
  5. ​Redis的各种“坑”,你知道多少?
  6. 【浏览器】浏览器模式与文档模式区别
  7. popupwindow使用之异常:unable to add window -- token null is not valid
  8. 快速(动易)模板制作
  9. 基于javaweb+jsp的员工绩效考核管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)
  10. protel99实用基础入门教程
  11. 微信公众号开发 (1) 微信接入认证成为开发者
  12. java 雷霆战机 教程,java swing实现简单的雷霆战机小游戏项目源码附带视频指导修改教程...
  13. IDM高速下载器 快来白嫖~
  14. java环境变量user.home详解
  15. 金融工程---马尔科夫预测
  16. 华硕主板驱动在哪里下载?(ROG STRIX B250I)
  17. MagicLicense破解记录
  18. 中国自主研发的USB2.0 HUB芯片,即将发布CH334 和CH335工业级
  19. 【软件安装故障排除】安装完PyCharm,启动时弹出“Failed to load JVM DLL\bin\server\jvm.dll“解决方案
  20. 数据库间表结构对比和数据对比

热门文章

  1. JSON增删改查学习笔记
  2. Java知识点04——集合(Set、List、Queue、Map、Collection和Iterator、Collections工具类)
  3. 解决方法:A fatal error occurred. The required library hostfxr.dll could not be found.
  4. error A2031: gisters not allowed【汇编】
  5. clearfix的运行机制和进化
  6. iPhone电量显示突然消失的原因(修正说法不严谨)
  7. 高净值人群需求拉动高端医疗保险发展,2020年保费收入超百亿[图]
  8. 与人相处,请多一份真诚
  9. 别犯傻,警惕微信红包封面骗局!
  10. idea汉化教程-其他软件同样操作