基于struts spring ibatis的轻量级J2EE开发

2008-02-23 09:21:17来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


内容:1. 前言2. JpetStore简述3. JPetStore的改造4. 结束语 public String myActionMethod() { //..work return "success"; }

方法的返回值直接就是字符串,对应的是forward的名称,而不再是ActionForward对象,创建ActionForward对象的任务已经由BeanAction类代劳了。

另外,程序还提供了ActionContext工具类,该工具类封装了request 、response、form parameters、request attributes、session attributes和 application attributes中的数据存取操作,简单而线程安全,form bean类使用该工具类可以进一步从表现层框架解耦。

在这里需要特别指出的是,BeanAction类是对struts扩展的一个有益尝试,虽然提供了非常好的应用开发模式,但是它还非常新,一直在发展中。

图2 JpetStore 4.0具体实现

2.4. 代码剖析
下面就让我们开始进一步分析JpetStore4.0的源代码,为下面的改造铺路。

  • BeanAction.java是唯一一个Struts action类,位于com.ibatis.struts包下。正如上文所言,它是一个通用的控制类,利用反射机制,把控制转移到form bean的某个方法来处理。详细处理过程参考其源代码,简单明晰。
  • Form bean类位于com.ibatis.jpetstore.presentation包下,命名规则为***Bean。Form bean类全部继承于BaseBean类,而BaseBean类实际继承于ActionForm,因此,Form bean类就是Struts的 ActionForm,Form bean类的属性数据就由struts框架自动填充。而实际上,JpetStore4.0扩展了struts中ActionForm的应用: Form bean类还具有行为,更像一个BO,其行为(方法)由BeanAction根据配置(struts-config.xml)的URL来调用。虽然如此,我们还是把Form bean类定位于表现层。

    Struts-config.xml的配置里有3种映射方式,来告诉BeanAction把控制转到哪个form bean对象的哪个方法来处理。

    以这个请求连接为例http://localhost/jpetstore4/shop/viewOrder.do

    1. URL Pattern

    
    
        <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
    
        name="orderBean" scope="session"
    
        validate="false">
    
        <forward name="success" path="/order/ViewOrder.jsp"/>
    
      </action>
    
      

    此种方式表示,控制将被转发到"orderBean"这个form bean对象 的"viewOrder"方法(行为)来处理。方法名取"path"参数的以"/"分隔的最后一部分。

    2. Method Parameter

    
    
        <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
    
        name="orderBean" parameter="viewOrder" scope="session"
    
        validate="false">
    
        <forward name="success" path="/order/ViewOrder.jsp"/>
    
      </action>
    
      

    此种方式表示,控制将被转发到"orderBean"这个form bean对象的"viewOrder"方法(行为)来处理。配置中的"parameter"参数表示form bean类上的方法。"parameter"参数优先于"path"参数。

    3. No Method call

    
    
        <action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction"
    
        name="orderBean" parameter="*" scope="session"
    
        validate="false">
    
        <forward name="success" path="/order/ViewOrder.jsp"/>
    
      </action>
    
      

    此种方式表示,form bean上没有任何方法被调用。如果存在"name"属性,则struts把表单参数等数据填充到form bean对象后,把控制转发到"success"。否则,如果name为空,则直接转发控制到"success"。

    标签:

    版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:使用对象-关系映射(ORM)系统中间件提升软件开发效率及质量

下一篇:JBuilder 2005中默认对未被Web Module引用的class文件,不会部署