`
juyin
  • 浏览: 1639 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于在同一个action中实现CRUD多个操作方法的问题

阅读更多
为了减少action的数量,我一般把对单表的CRUD操作放在同一个action中实现了,但问题来了:
这样action的属性(实例变量)就会很多很杂乱,比如一个产品表的操作至少需要注入以下参数
List productList;//查询方法需要
Product product;//增加、修改方法需要
还有分页参数等等
搞的不好还有String productId之类的
这样导致action的逻辑看起来很混乱。

单一职责固然合理,但如果因此而引入大量的action类导致其他的如管理上的问题又是否值得呢?况且单表的CRUD操作之间也可能是有关联的,如删除操作后可能需要调用查询操作来返回一个新的产品列表。
我甚至觉得这是webwork设计上的一个问题,使用无侵入的getter/setter方式和视图间传递(交换)数据本身没有问题,但在action中使用属性(实例变量)也会带来很多的问题,不够清晰,而且搞的最后action也只有每次产生新的对象来保证线程安全问题,还有action的返回值使用String也不够OO,连struts都用了一个ActionForward来封装。

顺便说说我比较希望的方式:
public class ***Action implements Action
{
   private ProductManager productManager;    
    public ModelAndView update(ActionContext context)
   {
       Product product =(Product)context.getRequestArg("product");
       productManager.update(product);
       ModelAndView respOjb=new ModelAndView();
       respOjb.addModel("product",product);
       respOjb.setView("success");
       return respObj;
   }
   .....
}

和事件机制类似,无状态,代码不比webwork长,有点像Spring的MVC了,但又没有和servlet产生依赖。
分享到:
评论

相关推荐

    在Struts 2中实现CRUD

    本文将详细介绍如何在Struts 2框架中实现CRUD操作,并通过一个简单的示例项目来展示整个过程。 #### 二、Struts 2简介 Struts 2是由Apache Software Foundation维护的一个开源项目,它是一个用于构建企业级Java Web...

    SSH实现分页模型和CRUD操作

    在实现分页时,Struts2可以通过Action类来接收并处理来自前端的分页参数,如当前页数和每页显示的记录数,然后调用服务层的方法来获取分页数据。 **Spring** 作为核心的依赖注入(DI)和面向切面编程(AOP)框架,...

    struts_crud

    9. **事务管理**:对于涉及多个数据库操作的CRUD操作,比如创建一个新记录同时更新其他记录,需要考虑事务的边界,以确保数据的一致性。 10. **安全性**:在开发CRUD应用时,必须考虑到安全性问题,防止SQL注入、跨...

    SSH框架CRUD小例子

    在SSH框架下实现CRUD(Create、Read、Update、Delete)操作,主要是通过以下步骤: 1. **创建**:使用Hibernate的Session接口,调用save()或saveOrUpdate()方法来保存新对象到数据库。同时,Spring可以通过AOP来...

    struts2与hibernate的整合实现数据的crud

    5. **DAO层设计**:创建Hibernate的Data Access Object(DAO)接口和实现类,这里包含对数据库的CRUD操作方法,比如使用Session对象执行SQL语句。 6. **Service层设计**:创建Service接口和实现类,将业务逻辑封装...

    我做过的简单的CRUD

    3. Struts2配置:定义Action类,每个方法对应一个CRUD操作,并在struts.xml文件中配置相关映射。 4. Spring配置:设置数据源、事务管理器,以及Hibernate SessionFactory。 5. Hibernate配置:配置Hibernate的实体类...

    struts2CRUD

    在CRUD示例中,每个操作(如添加、查询、修改、删除)都会对应一个Action配置。 5. **Action类** Action类是处理用户请求的入口,它封装了业务逻辑。在CRUD操作中,Action类会包含对应的方法,如`add()`, `read()...

    ssh1实现简单的增删查改i+ssh2实现crud

    在Struts2中,可以创建一个表单,提交后调用Action的execute()方法,然后由Spring控制事务,确保数据安全插入。 2. **读取(Read)**:使用Hibernate的Session对象的get()或load()方法获取特定ID的对象,或者通过...

    ssh2项目 实现登陆,crud操作,用aop控制事物

    例如,当一个业务操作涉及多个数据库操作时,这些操作应该在一个事务内完成。如果发生错误,所有改变都将回滚,保证了数据的完整性。 总结来说,SSH2项目是一个全面展示SSH2框架特性的实例,包括Struts2的请求处理...

    struts2 CRUD

    Struts2 CRUD是一个典型的Java Web开发中的概念,它涉及到Model-View-Controller(MVC)设计模式的应用,以及使用Struts2框架实现对单一数据库表的创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)功能。...

    Struts2-Crud+JdbcDemo最简单的Struts2+jdbc学习曾删改查程序

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中被广泛应用,尤其适合构建企业级应用。JDBC(Java Database Connectivity)是Java中用于访问数据库的标准API,提供了连接、查询、插入、更新和...

    struts CRUD+HIbernate 多对一查询+部分表删除功能

    多对一关系意味着在一个表中有一个字段指向另一个表的主键,例如,一个员工可以属于多个部门,而部门只有一个负责人。我们可以使用Hibernate的ManyToOne注解来指定这种关系,并通过Session的get()或load()方法获取...

    做网站跟养儿子似的:一周时间做的ssh,实现crud和分页

    标题中的“做网站跟养儿子似的:一周时间做的ssh,实现crud和分页”表明了这是一个关于使用SSH(Struts2、Spring、Hibernate)框架在一周内开发网站,并且实现了CRUD(创建、读取、更新、删除)操作以及分页功能的...

    Struts2整合Spring Hibernate的CRUD实例

    例如,当一个操作涉及多个数据库操作时,可以确保所有操作要么全部成功,要么全部回滚。 6. **异常处理**:Struts2提供了全局异常处理机制,可以捕获并处理运行时异常。在struts.xml中配置全局异常映射,定义不同...

    struts2CRUD-2

    6. **事务管理**:如果涉及到多个数据库操作,需要确保它们在一个事务中完成。Struts2可以与Spring框架结合,利用Spring的事务管理功能。 7. **视图层(View)**:Struts2使用JSP或FreeMarker模板作为视图。每个...

    Struts2.2入门By CRUD

    在CRUD操作中,你需要创建四个Action类,分别对应Create、Read、Update和Delete。这些类继承自Struts2的抽象Action类,如`ActionSupport`,并实现相应的业务逻辑方法。 3. **结果映射(Result Mapping)**:在...

    struts_crud源码

    本源码分析将深入探讨如何在Struts框架中实现这些基本操作。 1. **Struts框架基础** - **ActionServlet**:作为Struts的核心,它是Servlet的子类,处理HTTP请求并分派到相应的Action。 - **ActionMapping**:定义...

    struts2-CRUD

    Struts2-CRUD是一个基于Struts2框架的简单示例,用于展示如何在实际应用中实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,这是许多Web应用的基础功能。Struts2是一个强大的、成熟的Java ...

    Struts2CRUD

    Struts2CRUD是一个基于Apache Struts2框架实现的创建、读取、更新和删除(CRUD)操作的示例项目。这个项目旨在帮助开发者理解如何在实际应用中利用Struts2来处理基本的数据操作。Struts2是一个流行的Java Web框架,...

Global site tag (gtag.js) - Google Analytics