Java的反射的机制来简化Structs应用程序的开发.docVIP

Java的反射的机制来简化Structs应用程序的开发.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
本文讲述了如何利用Java的反射的机制来简化Structs应用程序的开发。 一、Struts中引入ActionForm类的意义与缺陷: 在Struts应用程序中,ActionForm是一个很重要的概念,它的主要功能就是为Action的操作提供与客户表单相映射的数据(如果在客户指定的情况下,还包括对数据进行校验)。Action根据业务逻辑的需要,对数据状态进行修改,在改变系统状态后,ActionForm则自动的回写新的数据状态并保持。程序员对JSP与ActionForm?Bean的对应关系,通常感到很迷惑,JSP与ActionForm到底是1:1,还是N:1,对此,Struts本身对此并没有提出自己的观点。无论是一对一,还是多对一,Struts本身并不关心,它都能很好得工作。Struts在它的开发文档中指出,对于较小规模的开发,开发人员可以根据自己的需要,每个模块只写一个ActionForm?Bean,甚至整个应用程序只写一个ActionForm?Bean.当然,Struts也不反对每个ActionForm?Bean只对应一个JSP,他们之间的对应关系,由开发人员自己决定。? 在我看来,正如Entity?EJB对J2EE的重大贡献一样,Entity?EJB使得程序员对二维关系数据库的存取对象化了,程序员可以使用Set?或者Get等面向对象的方法来操纵关系数据库的数据,而ActionForm也使得程序员对网页的数据存取奇迹般的对象化了,程序员同样也可以使用Set?或者Get等面向对象的方法存取网页上的数据,这是一个开发模式方式上的重大转变。基于此,我个人认为ActionForm与JSP即VIEW层的关系最好是一对一的关系,这样,在理解上会更清晰一些。但是,这样也会带来一个很现实的问题,在一个应用程序中,也许有非常多得JSP页面,如果每个ActionForm?都只对应一个JSP页面,那么系统的Java代码就会急剧膨胀起来,而且,每个ActionForm都是只有很简单的Set或者Get方法存取数据,那么,如何简化Struts应用程序的开发呢?? 在Struts1.1?中,Struts引入了DynaActionForm和Dyna?Bean,试图解决这个问题,在我看来,DynaActionForm的引入,破坏了对网页存取对象化的概念,使开发人员重新回到了使用HashTable、Map、Collection、ArrayList等集合对象来实现对数据进行存取的老路上来。虽然应用程序的灵活性大大增加了,但是代码的可读性也大大降低了,开发人员之间的交流难度也增加了。? 在传统的应用程序对ActionForm?Bean的访问中,我们通常都写成如下的形式:? Connection?conn=DriverManager.getConnection("JDBC?URL?"); ??????sql="?select?*??from?some?tables?"; PreparedStatement?stmt?=?conn.prepareStatement(sql); ??????ResultSet?rs?=?stmt.executeQuery(); ArrayList?array=new?ArrayList(); while?(rs.next())?{ ???AActionForm?actionForm?=new?AActionForm?(); ???actionForm.setId(rs.getString("Id")); ???actionForm.setName(rs.getString("Name"));??????????? ???array.add(actionForm); } 在Action?的Execute方法中,我们?把这个集合用request.setAttribute("array",?array)存储起来,然后在JSP页面中,我们用iterate?Tag把数据循环现实出来。代码通常都是这个样子:? <logic:present?name="?array?"?scope="request"> <logic:iterate?name="?array?"?id="?array?"? type="com.bhsky.webis.Goods"> ?<tr?align="center">? ????<td?class="table2"> <bean:write?name="?array?"?property="goodsid"/> </td> <td?class="table2"> <bean:write?name="?array?"?property="goodsname"/> </

文档评论(0)

138****6022 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

认证主体盛**

1亿VIP精品文档

相关文档

相关课程推荐