现在的位置: 首页 > 综合 > 正文

Struts最佳实践

2013年08月26日 ⁄ 综合 ⁄ 共 2513字 ⁄ 字号 评论关闭

背景:

      从本期的电子杂志内容介绍中,大家已经看到了web发展的整个历史,  

      Struts 自从 2001 61.0 Release之后经历了漫长的春秋,有着庞大的用户群体, 并且IBM, Tomcat Web控制台都采用了Struts Framework..

      web框架有好多种选择,并不一定要使用Struts, 但如果你正刚开始使用的话,希望下面的一些实践能给你带来帮助, 仅此而已所以,请原谅,本文没有什么实例代码, 因为今天早上,我的好友Leemassn 跟我说,这东西已经烂掉了 :( ,所以相信基本用法你们了解的比我多,也并没有涉及到一些高级用法, 我下面所说的内容, 也均属纸上谈兵.

1. 正确是导向,才是使用Web Framework的真正目的.

   并不时因为Struts 耳儒目染的多了,我们才一定要使用Struts ,并不时MVC就一定要使用Struts ,当你能灵活游刃于StrutsActionForm ,Action ,Lib之间, "疏能跑马,密不透风而且能够扩展的你的Web 框架时,之后才是我们运用框架的真正灵便之处.

 

    先说一些与Struts 无关的话题,因为Struts并不能取代你应用框架的全部,无论项目大或小,复杂或者简单

一些建议:

 1. 请选用支持广泛的JDO  或者Hibernate,或者iBates,来做你的数据持久层,

 2. 请加入Struts-el标签,

 3. 请选用应用服务器的JNDI连接数据库

 4. 请使用StrutsTestCase做单元测试

 5. 请阅读sun 的命名规范.

 

.Struts 之对象使用篇

   Struts 版本换了好多了,,如果你只是使用最基本的FormAction相信0.5 就够了,但眼下大家用的都是1.1 

    每写个应用都用继承BaseAction ,BaseForm , 当然BaseAction 最好是继承LookupDispatchAction, BaseForm 最好是继承ValidatorActionForm (这两个都是从1.1开始有的)

      

  ValidatorActionForm也是继承ActionForm ,   因为1.1有了PlugIn,当你使用ValidatorPlugIn使得你的FormBean具备了验证能力啦.  

 

  (1.1 也同时 DynaActionForm ,相信大家都知道这个Bean,但它似乎除了让你少写一些ActionForm之外没什么用处,除非你是想完全不给予ActionForm,这样偶尔用到ActionForm的时候也可以小用一把DynaActionForm, 看来Struts对自己的ActionForm似乎没有多信息,欲弃欲留,我们都知道ActionForm 是不能完全充当ModelModel已应该是你的持久层)的,那我们至少可以用它来传值吧,方便支出就是不需要 一个个表单内容去get ,set了.所以,我们有必要使用ActionForm , 同时我们也要对每个属性进行用户端的输入校验,于是我们选用ValidatorActionForm.)

 

     LookupDispatchAction 继承DispatchAction, 自己多加两个方法,就是getKeyMethod(),localMap ,它能帮你 从本地submit的资源文件,比如submite 的名字是add 就能找到你的add方法.

 

 

.Struts 之标签库篇.

   相信Struts是很讲究复用的

  标签库主要还是用做View,所以,在设计ActionForm的时候大可大胆设计,别担心他们不能在jsp页面上很好的显示, 该是Data类型就是,也可以使用List,Map ,这样的符合类型,也可以是引用对象类型,因为他们能很方便的在页面上显示

    如果Test1Form包含了 各种Model对象,

   Test1Form{

        Student student      //id,name等属性

        Teach teach    //有id, classid等属性

        List classes   //一组Classes 对象 Classes又含有 classid等属性

        Test2Form test2form --- // attr2 property

        ....

     }   

     那么

      <html:form action="/test1">
     <bean:define name="test1Form" property="test2Form" id="test2"
                type="com.yourcompony.Test2Form" />
      <html:text  name="test2" property="test2.
attr2" />

         <html: text name="studentsid" property="student.id">

         <html: text name="techname" property="teach.name">

         <html: text name="classid" property="classes[0].classid">
   </html:form >
 

  看到了,它们其实什么都能得到,发挥你的想象标签库能展示你的任何对象属性值.

    记得在ActionForm reset里初始化一下,并且依次得到对象.这样你同样能把这些内容全部递交给ActionServlet. 如果没使用过这些,赶紧试试吧.

   

     尽量使用EL标签: 主要用于复杂的逻辑判断,

   举个例子 <logic:present name="yourForm" property="a"> 判断了a是否存在,但你又想知道a 是否等于1,怎么样头痛了吧,换成el 那就是 <c:if test='${yourForm.a =="1" }'>  ..../c:if

  

    补充一些:对于前台的显示,,Struts标签不得不说是似乎已经成了一

抱歉!评论已关闭.