JpetStore学习struts新的开发模式

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 >



参考

http://blog.csdn.net/yanwp/archive/2006/01/13/578379.aspx

你可能感兴趣的:(JpetStore学习struts新的开发模式)