发布一篇怎样将粉饰形式使用到servlet request对象上
先谈谈我对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。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
页:
[1]