blogjava's web log

blogjava's web log
...

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

posted on 2006-05-30 00:09 record java and net 阅读(834) 评论(3)  编辑  收藏 所属分类: struts

评论

# re: JpetStore学习struts新的开发模式 2006-05-30 12:18 老鼠

:):)

您这篇文章我也要了:p

转ITPUB论坛去:P

您要是不愿意,要跟我说一声哦:P  回复  更多评论   

# re: JpetStore学习struts新的开发模式 2006-05-30 17:25 吴某人-不断地学习

同道中人..

  回复  更多评论   

# re: JpetStore学习struts新的开发模式 2007-03-17 16:00 阿寿

这篇文章我看了,对我有用,谢谢你啦.  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

常用链接

留言簿(44)

新闻档案

2.动态语言

3.工具箱

9.文档教程

友情链接

搜索

最新评论