服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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

今天研究了一下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>