WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院WEB开发Jsp 可以使用多个jsp定制标签在JSP中达到接近servelt的... 阅读

可以使用多个jsp定制标签在JSP中达到接近servelt的处理效果

 2005-06-18 16:29:34 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄闁圭⒈鍋嗛惀顏囶樄闁哄本娲樼换婵婄疀閺囩姷鐛ラ梻浣哄帶婢瑰﹥绂嶅⿰鍫氣偓鏃堝礃椤忎礁浜鹃柨婵嗛婢ь喖霉閻樻瑥瀚粻楣冩煕椤愩倕鏋庨柣蹇嬪劜閵囧嫰寮村Ο鍝勫Е濡炪們鍨洪悷鈺呭箖閳╁啯鍎熼柕鍥у簻閹凤拷
核心提示: jsp可以令菜鸟直接写简单的网页程序(网友言),而servlet却有jsp所不及的集成程度和易维护性,可以使用多个jsp定制标签在JSP中达到接近servelt的处理效果,两者在java/BS系统中无法简单取代,但同时并存却令开发者陷入近两年来最常见的陷阱中:必须在一个即使是相对简单的项目中维持多套程序模式的方案,

   jsp可以令菜鸟直接写简单的网页程序(网友言),而servlet却有jsp所不及的集成程度和易维护性。两者在java/BS系统中无法简单取代,但同时并存却令开发者陷入近两年来最常见的陷阱中:必须在一个即使是相对简单的项目中维持多套程序模式的方案,显然,这是高成本的。本文考虑并初步实验了使用标签组件连续完成类似servlet的处理效果,从而达到鱼和熊掌兼得的目的,看来有一定的效果。

   在完全使用servlet的环境中,可以使用servlet的继承获得上级servlet的设定属性;还可以使用servlet-chains达到分类处理的目的,整个WEB程序与实际应用系统非常相似,高效而简洁;在servlet-jsp的环境中servlet起到集中处理请求的作用,而jsp负责显示各种形式采摘的数据。后者最麻烦的就是在servlet/jsp中的数径和变量处理方式不一致,平添大量的原始的工作量。strutsr actionmapping一定程度上解决这个问题,不过解决得不算太彻底。因此在大型的java BS应用中采用servlet/jsp形式所带来的方便,一定程度上将会被这种变量的不一致性所抵消,毕竟,维持两种处理方案本身就是高成本的。

   因为这个原因,过去本人干脆完全采用servlet形式,而通过另外写程序解释由网页人员编写的嵌套式的html来达到与JSP类似的目的。这套方案在三四年前是有效的,但在今天由于SUN选择了JSP作为发展的主体,包括JTL,TAG技术,甚至于jsdk1。5中的cacheResutlSet都是为了这种(我认为是落后的)JSP随机编码而开发,因此,独自坚持走servlet道路是不明智的,(参看本人《选择JSP作为BS发展方向很可能是致命的战略失误》一文);但是,同样的疑问并不会因为SUN选择了JSP而消失:如果完全采用JSP,那么在数据提交处理上还是必须使用SERVLET以简化处理逻辑,但同时也必须承受上述的负面作用。

   作为SUN赞助支持的JAVA/BS主体项目方案之一的struts框架充分体现了这一矛盾带来的困惑和折衷:struts- action/actionmapping本身就是为了达到克服上述的JSP不足,希望鱼和熊掌兼得,通过ActionServlet令使用者减少 servelt程序的编写量;不过,在不能完全解决问题的同时,也令开发者为了这不是主体需求的需求,而必须多采用一个框架;一定程度上实际上是得不尝失。

   如果上述逻辑成立,那么如同几年前本人完全选择servlet一样,既然选择了jsp作为主体方案,那么就应该考虑完全抛弃servelt,以便以一套方案处理项目,避免维护两套系统带来的附加性成本。但是如同所有人在若干年前指出的一样,JSP缺乏有效的代码管理手段;也不便于形成象servlet那样的基本框架体系,这样它与简单的网页程序如asp/php没有什么不一样。引入javabean(组件,不是简单的数据对象化载体),可以一定程度上改善这种处境,但javabean缺乏统一的调用规范,却令这样的JSP比纯粹的servelt开发显得更为麻烦。

   我在使用tag时,觉得可以吸取servelt-chains的概念,使用象SimpleTabSupport这样最简单的标签方式,生成一个个的命令形式的标签,参数可以直接作为标签参数输入,这样在某个jsp中次第引入这种标签命令,就可以达到类似于servlet-chains的效果,而从易于配置使用上看,超过了servelt。为简便起见,我以struts的ActionServlet为蓝本,写成一个ActionTag的基本类,同样使用 ActionErrors/ActionForm作为数据和消息的载体;然后所有的Command标签全部继承这个ActionTag,这样编写一个命令标签的工作量不会比编写一个struts-action bean的工作量更大。另一方面,由于标签直接可以接受参数设定,所以无需任何如Actionmappin这样的预设置,实际上简化了维护。我认为仅此而言,它至少比struts的ActionMapping要简洁有效。

   类似这样的在一个平面上以标签形式执行多个命令的处理方法并不鲜见,大名昭昭的Apache的httpd.conf就是使用这样的方式完成设置的。

   通过这样的方法,可以统一以JSP的方式来处理几乎所有BS的网页请求,接受在JSP页面上的目录和变量的同样设定,估计可以大幅度降低开发和维护的成本,以及降低相应的技术要求。

Tags:可以 使用 多个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接