赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

入门:JpetStore学习struts新的开发模式

发布时间:2008.01.09 04:32     来源:赛迪网    作者:maXiaoKe

今天研究了一下JpetStore源代码 ,发现它的开发strust模式和我们以往开发的模式完全不同,所有的strust类都继承org.apache.struts.beanaction.BaseBean

仔细研究BeanAction类,发现它其实是一个通用类,利用反射原理,根据URL来决定调用formbean的哪个方法!

一个简单的例子

 package  strutstest.action;
 // 继承BaseBean
 import  org.apache.struts.beanaction.BaseBean;

 public   class  TestBean  extends  BaseBean   {
   
     public   static   final  String SUCCESS  =   " success " ;
     public   static   final  String FAILURE  =   " failure " ;
     public  TestBean()   {
    }
     private  String id;
     private   int  age;
     private  String name;
     private  String address;
     // getter setter
 // 定义几个业务方法
      public  String saveUser()
        {
          System.out.print( " 添加用户.. " );
           // 这里返回一个字符串,将自动导向成功页
           // 对应的是 forward 的名称
            return  SUCCESS;
      }
       public  String updateUser()
        {
          System.out.print( " update user.. " );
        
           return  SUCCESS;
      }
       public  String getUser()
        {
           if (id == null )
            {
             System.out.print( " 没有此用户 " );
              // 导向失败
              retutn FAILURE;
           }
         
          System.out.print( " 用户id= " + id);
           return  SUCCESS;
      }

strust-config.xml配置文件

< struts-config>
  < form-beans>
    < form-bean name="testBean" type="strutstest.action.TestBean" />
  < /form-beans>
  < action-mappings>
    < action name="testBean" path="/test/saveUser" type="org.apache.struts.beanaction.BeanAction">
      < forward name="success" path="/success.html" />
    < /action>
    < action name="testBean" parameter="*" path="/test/index" type="org.apache.struts.beanaction.BeanAction" validate="false">
      < forward name="success" path="/user.jsp" />
    < /action>
    < action name="testBean" path="/test/updateUser" type="org.apache.struts.beanaction.BeanAction">
      < forward name="success" path="/success.html" />
    < /action>
    < action  name="testBean" path="/test/getUser" type="org.apache.struts.beanaction.BeanAction" >
         < forward name="success" path="/success.html" />
    < /action>
  < /action-mappings>

说明|:

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


< action name="testBean" path="/test/saveUser" type="org.apache.struts.beanaction.BeanAction">
      < forward name="success" path="/success.html" />
    < /action>


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

此种方式表示,form bean上没有任何方法被调用。如果存在"name"属性,则struts把表单参数等数据填充到form bean对象后,把控制转发到"success"。否则,如果name为空,则直接转发控制到"success"。这就相当于struts内置的org.apache.struts.actions.ForwardAction的功能

前台调用

< html:link page="/test/saveUser.do">
saveUser
< /html:link>
< html:link page="/test/getUser.do?id=22">
getUser
< /html:link>
< html:link page="/test/updateUser.do">
UpdateUser
< /html:link>
< /body>
< /html:html> 
       (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 数据库相关:Hibernate对多表关联查询 (01-08) · 通过反射调用其他类的private method (01-08)
· Java入门:Java多线程程序设计详细解析 (01-08) · eclispe下开发struts完整解决乱码问题 (01-08)
· Java 安全:Java 语言的 XML 验证 API (01-08) · 谈JSP与XML的交互 (01-08)
· J2EE综合--Java企业系统架构选择考量 (01-07) · 一个月薪1万的程序员给我上了震撼一课 (01-07)
· 致应届毕业生--少走弯路的十条忠告 (01-07) · 深入的理解abstract class和interface (01-07)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 工信部“三定”公布 总编制731名设24司局
· 北京发电子商务监管意见 营利性网店须办照
· 直播 08中国城市信息化高峰论坛 案例点评
· 烽火网络校园解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统