`
kelefa
  • 浏览: 1416 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

泛化实现webwork的action

阅读更多

用泛化实现DAO大家就比较了解, 不知有没有人用泛化实现action呢, 代码如下:

java 代码
  1.   
  2. import java.io.Serializable;   
  3. import java.lang.reflect.ParameterizedType;   
  4.   
  5. import org.apache.log4j.Logger;   
  6.   
  7. import com.kelefa.common.dao.AbstractDAO;   
  8. import com.opensymphony.xwork.Action;   
  9. import com.opensymphony.xwork.ActionSupport;   
  10.   
  11. /* 
  12.  * @param <dao></dao>  
  13.  *          该action实现添加功能的dao接口类, 例如:UserDAO  
  14.  * @param <vo></vo>  
  15.  *          要添加的实体类, 例如:User  
  16.  * @param <id></id>  
  17.  *          实体类的id属性的类, 一般是Integer  
  18.  */  
  19. public abstract class AddBase&lt;DAO extends AbstractDAO&lt;VO, ID&gt;, VO, ID extends Serializable&gt;
  20.         extends ActionSupport   
  21. {   
  22.     private static final Logger log = Logger.getLogger( AddBase.class );   
  23.   
  24.     private static final long serialVersionUID = 1L;   
  25.   
  26.     /**  
  27.      * 该action实现添加功能的dao接口类,提供setter方法,使得ioc容器可以进行注射  
  28.      */  
  29.     protected DAO dao;   
  30.   
  31.     public void setDao( DAO dao )   
  32.     {   
  33.         this.dao = dao;   
  34.     }   
  35.   
  36.     protected VO vo = newValueObject();   
  37.   
  38.     public VO getVo()   
  39.     {   
  40.         return vo;   
  41.     }   
  42.   
  43.     public AddBase()   
  44.     {   
  45.     }   
  46.   
  47.  
  48.     @SuppressWarnings"unchecked" )   
  49.     protected VO newValueObject()   
  50.     {   
  51.         Class entityClass = (Class) ((ParameterizedType) getClass()   
  52.                 .getGenericSuperclass()).getActualTypeArguments()[1];   
  53.   
  54.         if ( log.isDebugEnabled() )   
  55.             log.debug( "entityClass: " + entityClass.getCanonicalName() );   
  56.   
  57.         VO newInstance = null;   
  58.         try  
  59.         {   
  60.             newInstance = (VO) entityClass.newInstance();   
  61.         }   
  62.         catch ( InstantiationException ex )   
  63.         {   
  64.             log.warn( ex.getMessage(), ex );   
  65.         }   
  66.         catch ( IllegalAccessException ex )   
  67.         {   
  68.             log.warn( ex.getMessage(), ex );   
  69.         }   
  70.   
  71.         return newInstance;   
  72.     }   
  73.   
  74.     /**  
  75.      * webwork action  
  76.      */  
  77.     @Override  
  78.     public String execute()   
  79.             throws Exception   
  80.     {   
  81.         dao.insert( vo );   
  82.   
  83.         return Action.SUCCESS;   
  84.     }   
  85. }  

 

这样派生类不用写一行代码即可实现添加功能, 例如:

java 代码
  1.   
  2. import com.kelefa.common.action.AddBase;   
  3. import com.kingonsoft.house.dao.cms.ADTypeDAO;   
  4. import com.kingonsoft.house.entity.cms.ADType;   
  5.   
  6.   
  7. public class AddADType   
  8.         extends AddBase   
  9. {   
  10.     private static final long serialVersionUID = 1L;   
  11. }  

 

不知大家对这种方法有何看法.

分享到:
评论
1 楼 downpour 2007-06-25  
老实说,没有一个企业应用的持久化的逻辑会如此简单,一句insert就ok了。

所以,除了Load,其他的范化的Action很难被用到。

相关推荐

    WebWork入门教程[创建你第一个WebWork action]

    让我们深入探讨WebWork的核心概念、Action的创建以及如何实现基本的流程控制。 **WebWork核心概念** 1. **Action**: 在WebWork中,Action是业务逻辑的主要载体。它负责接收来自视图层(如JSP)的请求,处理业务...

    webwork in action

    根据提供的文件信息,本书《WebWork in Action》主要聚焦于Java WebWork框架的应用与实践,是一本详尽介绍WebWork框架各个方面的书籍。下面将基于标题、描述、标签及部分内容来提取并归纳出相关的IT知识点。 ### ...

    webwork in action 04

    webwork in action 第一部分:概貌 第二部分:核心内容 第三部分:内容的显示 第四部分:高级话题

    Webwork.in.action最新中文版

    Interceptor则提供了一种灵活的方式来拦截Action的执行,实现如日志记录、权限验证等功能;ValueStack是Webwork中的数据绑定机制,它简化了视图和模型之间的数据传递;而OGNL(Object-Graph Navigation Language)是...

    webwork in action 源代码

    《WebWork in Action》是一本专注于介绍WebWork框架的书籍,源代码的提供是为了让读者更深入地理解和实践书中的示例。WebWork是一个基于Java的MVC(模型-视图-控制器)框架,用于构建动态Web应用程序。它强调了代码...

    webwork源码底层实现

    4. **Interceptors(拦截器)**:WebWork引入了拦截器的概念,它们在Action执行前后执行,可以实现通用的功能,如权限检查、日志记录等。在源码中,你会看到这些拦截器的实现。 5. **Value Stack(值栈)**:...

    webwork in action 中文版.part02.rar

    webwork in action 中文版

    webwork in action 中文版.part07.rar

    webwork in action 中文版

    webwork in action 中文版.part03.rar

    webwork in action 中文版

    如何实现webwork+spring+hibernate框架结合

    ### 如何实现WebWork+Spring+Hibernate框架结合 随着企业级应用需求的不断增加和技术的不断发展,集成多种技术栈成为一种趋势。WebWork+Spring+Hibernate是早期比较流行的一种技术组合,它们各自解决的问题域不同,...

    Webwork in action

    从书名“WebWork in Action”及简短的描述“WebWork in action”,可以看出这本书旨在通过实践的方式教授读者如何使用WebWork这一Java Web应用开发框架。下面我们将从几个关键章节入手,深入挖掘其中涉及的重要知识...

    详解Webwork中Action 调用的方法

    `DefaultActionProxy`内部包含了Action的配置信息,它会创建并初始化`DefaultActionInvocation`,`DefaultActionInvocation`是Action执行过程的具体实现,它会按照配置信息调用Action的方法并处理结果。 - `...

    webwork in action.

    "WebWork in Action"是一本专著,深入探讨了这个框架的各个方面,包括其设计理念、核心组件以及如何有效地利用它们来开发高效、可维护的Web应用。这本书通常会涵盖以下关键知识点: 1. **MVC架构**:WebWork遵循MVC...

    webwork in action 中文高绝对清晰版版

    webwork in action 的中文版,影印,高清晰,本人阅读中。非常不错。文件太大了,分了 15个压缩文件。每个文件1分。

    WebWork in Action 中文版 + 示例代码 part1

    真正的webwork in Action中文清晰完整版,还附有书上的示例代码,不同于其它的章节摘录版,模糊版,英文版...学习webwork的最佳教材

    webwork.in.action中文pdf版 part5

    webwork.in.action中文pdf版 part5

    webwork.in.action中文pdf版 part1

    webwork.in.action中文版 pdf版本

    webwork

    1. **动作映射**:WebWork通过XML配置文件定义动作(Action)与URL之间的映射,这使得URL可以直接对应到特定的业务处理方法,简化了请求路由。 2. **强大的表单绑定**:WebWork支持将HTTP请求参数自动绑定到Action...

Global site tag (gtag.js) - Google Analytics