|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。
本文申明了怎样将粉饰形式使用到servletrequest对象上。起首,提出了一个与servletfilter有关的成绩,并注释了随之而引进的粉饰形式。然后,会商了怎样在servlet情况下利用此形式,并列出了利用此形式的几个对照着名的基于servlet的项目。最初,文章经由过程完成一个删除空缺符的filter例子,演示了粉饰形式在servlet中的利用。
简介
Servlet标准中所引进的filter使人心动不已,由于它引进了一个功效壮大的拦阻形式。Filter是如许一种Java对象,它能在request抵达servlet的服务办法之前拦阻HttpServletRequest对象,而在服务办法转移把持后又能拦阻HttpServletResponse对象。你可使用filter来完成特定的义务,好比考证用户输出,和紧缩web内容。但你拟富有效果地利用过滤器的动机却被你不克不及改动HttpServletRequest对象的参数的实际扫了兴,由于java.util.Map所包装的HttpServletRequest对象的参数是不成改动的。这极年夜地缩减了filter的使用局限。最少在一半的工夫里,你但愿能够改动筹办传送给filter的对象。假如在HttpServletRequest对象抵达Struts的actionservlet之前,我们能够经由过程一个filter将用户输出的过剩空格往失落,岂非不是更美好吗?如许的话,你就不用比及在Struts的action表单考证办法中才举行这项事情了。
侥幸的是,只管你不克不及改动稳定对象自己,但你却能够经由过程利用粉饰形式来改动其形态。
粉饰形式
在承继中,你能够经由过程承继一个父类并掩盖你但愿改动的办法来改动对象形态。但是,假如这个对象是由程序的另外一个子模块,比方对象工场(这里所说的工场是工场形式中的术语,下同。译者注)或是servlet容器所发生的,承继就力所不及了。
粉饰形式可用来增添一个现有对象的功效,或是改动其形态。与其利用承继体例来扩大此类,这个形式将一个对象包装成别的一个对象。是粉饰形式的UML类图。
:粉饰形式
在中,Component是一个接口,其详细完成是ConcreteComponent。要改动Component的形态,你能够修正ConcreteComponent或是扩大它(经由过程承继或完成接口的体例,译者注)。但是,假如ConcreteComponent来自于一个工场,你却黔驴技穷。你所能做的,就是创立一个同为完成了Component接口的粉饰类。在中,这个粉饰类的脚色就由Decorator来饰演,在程序中一般体现为接口或笼统类。Decorator类的一个特征就是,它有一个吸收Component对象的机关办法。你将拟粉饰的对象传送给这个机关办法。在本例中,这个对象就是从工场取得的ConcreteComponent对象。经由过程将此粉饰对象传送给Decorator的一个类变量,你能够会见Decorator中的任何办法。这就使你得以改动对象的形态了。
中的Decorator类纷歧定是接口或笼统类。假如你的程序不是很庞大,你能够将其转化为一个详细的Decorator类。
举个例子,思索如许一个复杂的动静传送程序,其次要部分是Messenger接口及实在现类MessengerImpl。让我们假定MessengerImpl对象来自于一个工场,因而你不克不及改动其形态。假如你筹办增添或改动Messenger对象的功效,你能够创立一个MessengerDecorator类。是此例子的类图。
:Messenger粉饰类
<p>
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net有没有机会赶上java。 |
|