知识大全 类反射简化Struts应用程序的开发(一)

Posted 反射

篇首语:宁愿跑起来被拌倒无数次 也不要规规矩矩走一辈子。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 类反射简化Struts应用程序的开发(一)相关的知识,希望对你有一定的参考价值。

类反射简化Struts应用程序的开发(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一 Struts中引入ActionForm类的意义与缺陷   在Struts应用程序中 ActionForm是一个很重要的概念 它的主要功能就是为Action的操作提供与客户表单相映射的数据(如果在客户指定的情况下 还包括对数据进行校验) Action根据业务逻辑的需要 对数据状态进行修改 在改变系统状态后 ActionForm则自动的回写新的数据状态并保持 程序员对JSP与ActionForm Bean的对应关系 通常感到很迷惑 JSP与ActionForm到底是 : 还是N: 对此 Struts本身对此并没有提出自己的观点 无论是一对一 还是多对一 Struts本身并不关心 它都能很好得工作 Struts在它的开发文档中指出 对于较小规模的开发 开发人员可以根据自己的需要 每个模块只写一个ActionForm Bean 甚至整个应用程序只写一个ActionForm Bean 当然 Struts也不反对每个ActionForm Bean只对应一个JSP 他们之间的对应关系 由开发人员自己决定     在我看来 正如Entity EJB对J EE的重大贡献一样 Entity EJB使得程序员对二维关系数据库的存取对象化了 程序员可以使用Set 或者Get等面向对象的方法来操纵关系数据库的数据 而ActionForm也使得程序员对网页的数据存取奇迹般的对象化了 程序员同样也可以使用Set 或者Get等面向对象的方法存取网页上的数据 这是一个开发模式方式上的重大转变 基于此 我个人认为ActionForm与JSP即VIEW层的关系最好是一对一的关系 这样 在理解上会更清晰一些 但是 这样也会带来一个很现实的问题 在一个应用程序中 也许有非常多得JSP页面 如果每个ActionForm 都只对应一个JSP页面 那么系统的Java代码就会急剧膨胀起来 而且 每个ActionForm都是只有很简单的Set或者Get方法存取数据 那么 如何简化Struts应用程序的开发呢?     在Struts 中 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= bhsky webis Goods >   <tr align= center >      <td class= table >  <bean:write name= array property= goodsid />  </td>   <td class= table >  <bean:write name= array property= goodsname />  </td>    </tr>   </logic:iterate>   </logic:present>     在Struts中 对数据的访问和显示的写法通常都是很固定的 在VIEW层 我们是没有办法简化自己的代码的 在Action层 其写法通常也很固定 只是做一个页面的跳转 商业逻辑和对数据得访问 通常都是放在JavaBean中 那么 在此 我提出一种运用类反射的机制 使应用程序对ActionForm Bean的赋值自动化 即应用程序通过一个简单的接口 使用一个通用的方法 就可以完成对ActionForm Bean的赋值 而不必在每个使用ActionFormBean的地方 都把数据库中的值手动赋值给ActionForm Bean 然后再在JSP页面中显示出来 虽然它不能减少ActionForm Bean的数量 但是 它至少使应用程序对ActionForm Bean的赋值自动化了 从而减少了程序出错概率 提高了程软件开发效率      二 类反射的概念   关于类反射的概念 在此我就不详细介绍了 它不是本文的重点 IBM developerWorks网站上有大量介绍类反射概念的文章 大家可以找出来参考一下 其实 Struts本身就大量利用了类反射的机制 cha138/Article/program/Java/ky/201311/28336

相关参考

知识大全 C#利用反射简化给类字段赋值

C#利用反射简化给类字段赋值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这个例子主要的思路是

知识大全 进行Struts应用程序单元测试开发

进行Struts应用程序单元测试开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一引言  测

知识大全 linux下的应用开发起步--简化蚂蚁制作(三)

   C前面看了一大段是不是有点云里雾里的啊?是有点罗嗦但是俗话说万事总是开头难OK现在总算可以写主程序文件了      下面就是antc文件    #includeanth  #includesig

知识大全 简化基于数据库的DotNet应用程序开发

简化基于数据库的DotNet应用程序开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  分析  

知识大全 用Struts框架开发Java应用

用Struts框架开发Java应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts开

知识大全 Struts为程序开发带来的好处

Struts为程序开发带来的好处  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts是对

知识大全 用MyEclipse开发第一个Struts程序

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容

知识大全 Struts开发指南之MVC架构实际应用

Struts开发指南之MVC架构实际应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  模型视图

知识大全 程序开发过程中Struts为您带来怎样的好处

程序开发过程中Struts为您带来怎样的好处  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  St

知识大全 动态代码的使用(反射和动态生成类)

  在软件开发尤其是框架和底层开发时为了更灵活的控制代码常常需要进行一些动态的操作比如根据用户的输入等动态的调用类中的方法或者根据数据库表结构用户要求动态的生成一些类然后再动态的调用类中的方法当然使用