`
betafox
  • 浏览: 148926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSH架构中的Struts似乎很鸡肋

阅读更多

在基于SSH的架构中,基本的流程是这样的:

 

1、展现层通过struts收集数据

2、在action中调用服务层业务接口,实现业务逻辑处理

 

(这里说的是struts1)

 

在这样的过程中始终存在如下很鸡肋的问题:

-------------------------------------------------------------

 

1、struts action变得很贫血。

 

     由于业务逻辑后置,用了action没有带来实实在在的好处,反而增加了交互的环节。典型的action使用mapping dispatch模式,每个action方法只有3行代码 :

 

 

    /**
     * 获得权限树,转向权限树页面
     */
    public ActionForward getFunctionTree(ActionMapping mapping, ActionForm form,
                                         HttpServletRequest request, HttpServletResponse response) throws StaffException {
        Collection tree = helper.getFunctionRootTree();
        request.setAttribute("tree", tree);
        return mapping.findForward("tree");
    }

 

    public ActionForward getRoles(ActionMapping mapping, ActionForm form,
                                  HttpServletRequest request, HttpServletResponse response)
            throws StaffException {

        Collection roles = helper.getAllRoles();
        request.setAttribute("roles", roles);
        return (mapping.findForward("success"));
    }

 

 

 

2、struts actionform也贫血,而且粒度很难把握

 

    由于form中的属性往往和业务层的Model对象存在相似性,所以在form中定义model的引用是常见的办法:

 

import com.surekam.platform.staff.model.Department;
import org.apache.struts.action.ActionForm;

public class DeptForm extends ActionForm {

    /**
     * 部门信息
     */
    private Department department = new Department();

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

}

 

如果这么做,form的价值在那里?? 唯一的必要性可能就是struts的表单标签要求必须有form,这不是很鸡肋吗?

 

另外实战中为了节省form的数量,往往会在多个操作中共享form类,结果是造成了form完全成了大杂烩,完全不可读!!

 

 

--------------------------------------------------------

 

 

那么从架构的角度来看,这很明显是一个共性的问题。望各位仁者见仁,将大家在实战中的经验共享一下,一起探讨解决方案。

 

我们的解决办法是对struts进行了一定得封装和扩展,有一个所谓的Nice Struts的组件来搞定这个问题。稍后会提供具体实现出来。


ENDING----------------------------------------------------------------------------------------------------------------------------------

 

帖子大家回了很多了,关于鸡肋的问题我想大家讨论就到此为止吧,呵呵

 

本帖的目的是为了引起大家重视这个问题,即:对开源组件及其套装在实战中与我们所期望的“应用层架构”之间的不协调,并在架构实践中多加思考,只是用struts做个例子而非针对struts而来。

 

 

事实:鸡肋的其实不是struts,我们自己要检讨!

 

参见下一帖 鸡肋问题解决之道!欢迎大家接着仍鸡蛋!<iframe></iframe>

 

http://www.iteye.com/topic/396024

分享到:
评论
3 楼 squall 2009-05-25  
见ibatis的JPetStore
2 楼 betafox 2009-05-25  
应该有更好的方式的,先买个关子,请其他高人出出主意,再说我的办法
1 楼 jcs7575 2009-05-24  
我认为action不就是做转发来用的
如果不用form那表单的数据传不过来啊

如果不用struts 如果用velocity也是一样需要有spring的controller 也需要有model的

你觉得呢?

相关推荐

    用eclipse搭建SSH架构(struts + spring + hibernate)

    SSH 架构(Struts + Spring + Hibernate)有很多优点,例如: * Struts 提供了一个灵活的 MVC 框架,能够方便地处理用户请求。 * Spring 提供了一个统一的 IoC 容器,能够方便地管理应用程序中的所有组件。 * ...

    SSH架构搭建,SSH架构,

    在Struts中,Action类作为控制器,处理请求并调用业务逻辑,然后将结果转发给相应的JSP页面展示。 2. **Spring**:Spring框架主要提供依赖注入和AOP功能,使得组件之间的依赖关系可以通过配置文件来管理,而不是硬...

    ssh项目(自定义struts1)

    在实际开发中,一个SSH项目会包含各种配置文件(如struts-config.xml、hibernate.cfg.xml)、Java源代码(Action类、DAO类、Service类等)、JSP页面以及数据库脚本等。开发者通常会利用IDE(如Eclipse或IntelliJ ...

    SSH中 struts hibernate spring 各起什么作用

    在SSH架构中,Struts主要负责处理用户界面部分,即表示层。 1. **核心组件**: - **ActionServlet**:作为控制器的角色,处理HTTP请求并将控制权转移给相应的Action。 - **Action**:业务逻辑的主要承载者,执行...

    ssh框架用struts2 hibernate实现图片的上传源码

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的MVC架构。本项目涉及的核心知识点是使用Struts2处理表单提交,Hibernate进行数据持久化,以及图片上传的相关技术。下面将详细介绍这些内容...

    SSH架构jar包集

    在Java中,SSH架构的集成使得开发者可以利用Struts的MVC结构,Spring的IoC和AOP特性,以及Hibernate的ORM能力,构建出高效且易于维护的系统。SSH的jar包集通常还会包含其他辅助库,如Apache Commons、LOG4J等,以...

    java ssh 架构说明

    Java SSH架构,即Struts + Spring + Hibernate(或MyBatis)的组合,是Java Web开发中非常流行的一种MVC框架模式。它将业务逻辑、数据访问、用户界面三者很好地分离,提高了代码的可维护性和系统的扩展性。 - **...

    ssh Jar 之struts2jar

    SSH(Spring、Struts2、Hibernate)是Java开发中常用的一种技术栈,它结合了Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)、Struts2作为MVC(Model-View-...

    SSH搭建架构Struts2+Spring2.5+Hibernate3.3

    在SSH架构中,Struts2与Spring的结合可以实现Action的依赖注入,使得业务逻辑更易维护和扩展。Spring管理的Hibernate Session可以在多个Action之间共享,减少了数据库连接的开销。具体来说,Struts2将用户的请求转发...

    基于ssh架构简单的论坛系统

    SSH架构,全称为Struts+Spring+Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可维护的Web应用程序。这个"基于SSH架构简单的论坛系统"是一个利用SSH框架技术实现的在线讨论平台,旨在提供用户交流思想...

    ssh.rar_ssh_ssh struts1_struts1.2

    SSH是Java开发中的一种经典企业级应用框架组合,由Struts、Spring和Hibernate三个开源项目组成,常被称为“轻量级”企业级开发解决方案。这个"ssh.rar"压缩包文件包含了一个基于Struts1.2、Spring2.0和Hibernate3.0...

    ssh架构实现登陆

    在SSH架构中,Spring还提供了与Struts和Hibernate的集成接口,使得各组件之间的交互更为顺畅。 Struts是MVC(Model-View-Controller)设计模式的一个实现,主要处理用户界面和业务逻辑的交互。它接收用户请求,调度...

    SSH架构总体描述。

    SSH架构是一种广泛应用于Java EE平台的开源开发框架,由Struts、Spring和Hibernate三个组件组合而成,主要用于构建高效、可重用的企业级应用程序。本文将详细介绍SSH架构的总体描述、框架集成规范、组件集成规范、包...

    SSH架构融合实例

    SSH架构融合实例主要涉及到的是Java开发中的三种核心技术:Spring、Struts和Hibernate,这三者合称为SSH。SSH是企业级应用开发中的一个经典组合,主要用于构建基于Java的Web应用程序。 Spring框架是SSH架构的核心,...

    SSH框架整合中struts2框架所需要的jar包

    该资源中包括SSH框架整合中struts2框架所需要的所有jar包。包括: (1)struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar(Struts2需要的所有jar包) (2)struts2-spring-plugin-2.3.24.jar(Struts2整合Spring...

    SSH架构的论坛系统(BBS)

    在BBS系统中,Spring管理着所有的bean,包括数据访问对象(DAO)、服务层对象以及Struts中的Action。此外,Spring还提供了事务管理,确保数据操作的原子性和一致性。 3. **Hibernate**:Hibernate是一个对象关系...

    ssh_TestStruts.rar

    8. **异常处理**:学习如何在Struts中优雅地处理和呈现异常信息。 9. **国际化和本地化**:可能涉及到多语言支持,学习如何配置资源文件来实现这一点。 通过深入研究这个"ssh_TestStruts.rar"压缩包,你可以获得...

    手把手SSH架构搭建

    ### 手把手SSH架构搭建详解 #### 一、概述 SSH框架是指Struts + Spring + Hibernate这三种技术的组合,是Java Web开发中非常流行的一种轻量级开发框架。本篇将详细介绍如何在MyEclipse 10环境下搭建SSH框架,并进行...

    SSH架构详解

    在讨论 SSH 架构时,我们需要了解到 Struts、Spring 和 Hibernate 三个流行的开源框架,它们分别用于表现层、业务层和持久层。这些框架能够帮助我们建立一个松耦合的架构,使得不同的层次能够彼此独立地工作。 在...

Global site tag (gtag.js) - Google Analytics