快速业务通道

J2EE表现层设计思考 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
t,应该被限制到表现层上。如果将这些细节放到商业层或者其它层中,将增加这些层间的耦合,这样就会减少可利用服务的重用性。如果商业服务的方法接受一个HttpServletRequest类型的参数,这样使用这个服务的客户(即使是那些非Web上的客户)都必须将它们的请求状态封装到一个HttpServletRequest对象中。此外,商业层的服务需要知道如何与这些表现层的数据结构交互,从而令商业层的代码变得复杂,并且增加了层间的耦合。

解决方法:

不让表现层的数据结构和商业层共享,而是拷贝相关的状态到一个更常见的数据结构中并且再共享。你也可以选择由表现层数据结构中将相关的状态分离出来,作为独立的参数共享。

在域对象暴露表现层的数据结构

问题摘要

将诸如HttpServletRequest的请求处理数据结构和域对象共享,这样将不必要地增加了应用中两个不同方面的耦合。域对象应该是可重用的组件,如果它们的实现依赖协议或者层相关的细节,它们可重用的机会就会减少,而且,维护和调试高耦合的应用更加困难。

解决方法:

不通过传送一个HttpServletRequest对象作为一个参数,而是拷贝request对象的状态到一个更为常用的数据结构中,并且将这个对象共享给域对象。你也可以选择由HttpServletRequest对象中将相关的状态分离出来,并且将每一个的状态作为一个独立的参数提供给域对象。

允许重复的Form提交

问题摘要

浏览器客户环境的其中一个缺点是对缺少对客户浏览某个应用时的控制。一个用户可能提交了一个订单,这个交易将会导致由一个信用卡帐号中扣除费用,并且将产品运送到客户手中。在接收到确认页面后,如果用户点击后退的按钮,同一个form将会再次提交。

解决方法

这个问题的解决方法上面已经提到,这里不再详述

直接暴露敏感的资源给客户访问

问题摘要

在企业环境中,安全是其中一个最重要的问题。如果某些信息没有必要让一个客户直接访问到,那么这些信息应该保护起来。对于特别的配置文件,属性文件,JSP或者class文件,如果不作一些保护,那么客户将可以不经意或者故意地接收到敏感的信息。

解决方法

关于保护敏感资源的方法,上面已经提到。

错误地认为<jsp:setProperty>将会复位Bean属性

问题摘要

<jsp:setProperty>标准标签可将request的参数值拷贝到同名的JavaBean helper属性中,不过,当参数的值为空时,得到的结果是很容易使人迷惑的。例如,一个值为空的参数将会被忽略,但很多开发者都错误地认为匹配的JavaBean属性将会得到一个null或者空的字符串值。

解决方法:

在使用<jsp:setProperty>标签时,不要只是想当然,在使用前,你应该初始化bean属性。

创建过大的控制器(Controller)

问题摘要

对于多个JSP视图中重复使用的控制代码,在很多时候都会放到一个控制器中。如果太多的代码被加入到一个控制器中,那么它就会变得很庞大并且难以维护、测试和调试。例如,对一个servlet控制器进行单元测试,特别是一个“臃肿的控制器”,相对于测试一个独立的和HTTP协议无关的helper类,将会复杂得多。

解决方法

在处理一个请求时,控制器通常都是首先处理的地方,不过它应该也是一个委托点,与其它的控制类一起工作。可以使用Command对象来封装控制器委托的控制代码。测试这些独立于Servlet引擎的JavaBean command对象要容易得多,因为它需要测试的模块代码更少。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号