SSH框架的底层机制及原理

合集下载

SSH框架工作原理

SSH框架工作原理

SSH框架工作原理
SSH(Secure Shell),又称安全外壳协议,是一种加密的网络协议,用于在不安全的网络上进行安全的数据传输和命令执行。

SSH使用加密传输,以便防止窃听和篡改,并允许远程主机之间的安全连接。

SSH的作用
是在客户端和服务器之间实现安全的通信管道,使得远程客户端可以发出
命令并与服务器进行交互。

SSH基于客户端-服务器模式,也就是说,客
户端必须具有SSH客户端程序,而服务端必须具有SSH服务端程序,客户
端和服务端之间的会话通过SSH客户端和SSH服务端程序进行数据加密传输。

SSH工作机制:
1. 用户发送一个SSH客户端的连接请求(Connection Request),
要求连接到远程服务器(Remote Server)。

2.SSH客户端建立一个TCP连接,并发送有关客户端和服务器版本信
息的请求,以及支持的加密算法。

3.服务器发送给客户端,有关服务器版本信息和支持的加密算法。

4. 客户端发送一个用户名和一个临时随机数的密文(Cipher Text)
给服务器,密文由客户端的公钥(Public Key)和服务器的随机数(Random Number)组成。

5.服务器接收到客户端的密文后,对这个密文进行解密,以确认客户
端的真实身份。

6.服务器发送给客户端一个认证请求,这个认证请求包含一个临时随
机数。

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Java的strutsspringhibernate精通SSH三大框架的底层机制及原理

Java的struts、spring、hibernate精通SSH三大框架的底层机制及原理1. 什么是SSH框架SSH是由Struts、Spring、Hibernate三个框架整合而成的,它是一种企业级、全栈式框架,非常适合开发大型Web应用程序。

Struts是MVC架构模式中的控制器层,负责接收请求并转化成对应的业务逻辑进行处理,同时也控制着视图层进行渲染。

Spring是一个轻量级的开源框架,它可以被用来构建Java企业级应用,能够提供全周期的、全栈式的框架服务。

Hibernate是一个ORM(对象关系映射)框架,之前在持久化层需要进行数据库的操作,但是Hibernate可以让开发者不用直接操作数据库,而是通过Java对象与数据库进行交互。

2. SSH框架的优势SSH框架的三个组件各自拥有一系列的优势。

Struts提供了用于Web开发的MVC架构,使得应用程序的开发和维护更加清晰、明了。

Spring专注于解决企业开发中的复杂问题,比如事务管理、安全管理、远程调用、Web框架等。

Hibernate则是优秀的ORM框架,可以将Java对象与关系型数据库进行映射,让开发者不用关心具体的SQL语句。

3. SSH框架的实现机制SSH框架的三个组件相互整合,形成了一个高效、稳定、易于使用的开发框架。

在SSH框架中,Web请求首先被Struts2框架接收,Struts2框架通过ActionContext来向Action中注入Spring容器管理的Bean完成业务逻辑处理,而Bean之间的关系都是由Spring的IOC容器维护的。

声明式事务管理交给Spring框架完成,Hibernate框架在ORM层将Java对象映射到数据库记录。

下面分别来详细介绍一下SSH框架各自的底层机制及原理。

3.1 Struts2框架Struts2框架是一个基于MVC模式的Web应用程序框架。

在Struts2中,负责接收请求转发的控制器为Action。

ssh整合框架原理及流程

ssh整合框架原理及流程

ssh整合框架原理及流程SSH(Spring、Struts和Hibernate)框架整合的原理和流程如下:原理:1. 控制反转(IoC):IoC是一种设计原则,通过这种原则,对象之间的依赖关系由容器来控制,而非传统的直接操控。

这使得程序代码更加灵活,易于复用。

2. 依赖注入(DI):DI是IoC的一种实现方式。

通过DI,组件之间的依赖关系由容器在运行时决定,并动态地将这种关系注入到组件中。

流程:1. 建立web工程,并将其编码设置为UTF-8。

2. 将整个JSP页面也设置为UTF-8编码格式。

3. 建立三个source folder文件:src(存放源代码)、config(存放所有的配置文件,如Struts、Hibernate和Spring配置文件)、test(存放测试类)。

4. 在WebRoot\WEB-INF\lib中导入相应的jar包。

5. 配置文件。

在这个文件中,Spring容器以监听器的形式与Tomcat整合。

6. Struts负责控制Service(业务逻辑处理类),从而控制Service的生命周期。

这样层与层之间的依赖很强,属于耦合。

7. 使用Spring框架来控制Action对象(Struts中的)和Service类。

这使得两者之间的关系变得松散。

Spring的IoC机制(控制反转和依赖注入)正是用在此处。

8. Spring的AOP应用:事务的处理。

在以往的JDBCTemplate中,事务提交成功、异常处理都是通过Try/Catch来完成。

整合SSH框架的目的是提高软件开发的效率和灵活性,减少代码的冗余和复杂性,使代码更易于维护和扩展。

SSH各框架工作原理

SSH各框架工作原理

SSH各框架工作原理SSH 是指以 Spring + SpringMVC + MyBatis 为基础的 Java Web 开发框架。

它是将三个框架集成在一起,以实现各自的功能,并提供了更加便捷的开发方式和高效的开发效率。

在了解 SSH 的工作原理之前,我们先来了解一下每个框架的作用和特点。

1. Spring:Spring 是一个开源的 JavaEE 框架,它提供了一个容器,负责管理对象的创建、销毁和依赖注入等工作。

Spring 的特点是灵活,它通过配置文件或注解的方式将对象进行装配,降低了耦合度,并支持面向切面编程(AOP)和事务管理等功能。

2. SpringMVC:SpringMVC 是 Spring 框架的一个模块,用于开发Web 应用程序。

它采用 MVC(Model-View-Controller)的设计模式,将业务逻辑、视图展示和用户交互分开。

SpringMVC 提供了一套基于注解的方式来映射 URL 到具体的处理方法,并支持数据校验、文件上传等常用功能。

3. MyBatis:MyBatis 是一个持久层框架,用于操作数据库。

它通过XML 配置文件或注解的方式,将 SQL 语句与 Java 对象进行映射。

MyBatis 提供了丰富的查询功能,并支持事务管理和缓存机制,可以有效地减少开发人员编写 SQL 语句的工作量。

了解了每个框架的作用和特点,下面我们来了解SSH框架是如何工作的。

1. 客户端发送请求:用户通过浏览器发送 HTTP 请求到服务器,请求的 URL 被映射到 SpringMVC 控制器的处理方法上。

2. SpringMVC 控制器处理请求:SpringMVC 根据请求的 URL,查找到对应的控制器,并调用相应的处理方法对请求进行处理。

控制器方法可以通过注解方式获取请求参数、校验数据等。

3. 控制器调用业务逻辑:在控制器中,可以调用业务逻辑层(Service)处理业务逻辑。

业务逻辑层通过依赖注入的方式获取数据库访问层(DAO)的实例。

ssh框架原理及流程

ssh框架原理及流程

ssh框架原理及流程SSH框架原理及流程。

SSH框架是指Struts、Spring、Hibernate三大开源框架的整合,它们分别解决了Web层、业务逻辑层和数据访问层的开发问题。

SSH框架的整合,旨在充分发挥各自框架的优势,实现高效、灵活、可维护的Web应用程序开发。

在本文中,我们将深入探讨SSH框架的原理及流程。

首先,我们来了解一下SSH框架各个组成部分的原理。

Struts作为Web层框架,它采用MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三层,实现了数据、展示和控制的分离,提高了代码的复用性和可维护性。

Spring作为业务逻辑层框架,它提供了IoC(控制反转)和AOP(面向切面编程)等功能,通过IoC容器管理对象之间的依赖关系,实现了松耦合,降低了组件之间的耦合度。

Hibernate作为数据访问层框架,它提供了ORM(对象关系映射)功能,将Java对象和数据库表之间建立映射关系,实现了面向对象的数据访问,简化了数据库操作。

接下来,我们来了解SSH框架的整合流程。

首先,我们需要在项目中引入Struts、Spring、Hibernate的相关jar包,并配置它们的配置文件。

在web.xml中配置DispatcherServlet,用于拦截所有的请求,然后将请求分发给对应的Controller处理。

在Spring的配置文件中配置业务逻辑层和数据访问层的Bean,以及事务管理器等。

在Hibernate的配置文件中配置数据源、SessionFactory等。

然后,我们需要编写业务逻辑层和数据访问层的代码,并在Controller中调用业务逻辑层的方法,最终将数据返回给视图层进行展示。

在SSH框架中,我们可以充分利用Struts的表单验证、Spring的事务管理、Hibernate的持久化操作等功能,实现了Web应用程序的快速开发。

同时,SSH框架也提供了良好的扩展性,我们可以根据项目的需要,灵活地替换其中的某个框架,而不影响整体架构。

ssh框架用法

ssh框架用法

SSH框架用法1. 什么是SSH框架SSH框架是一种用于构建分布式系统的开发框架,它由三个关键组件组成:Spring、Struts和Hibernate。

这三个组件分别负责处理应用程序的业务逻辑、Web层和数据访问层。

通过将它们集成在一起,SSH框架提供了一个完整的解决方案,使开发人员能够更快速、更高效地开发和维护复杂的分布式系统。

2. SSH框架的优势SSH框架具有以下几个优势:•模块化:SSH框架将整个应用程序划分为不同的模块,每个模块负责不同的功能。

这种模块化设计使得应用程序易于维护和扩展。

•松耦合:SSH框架使用依赖注入(Dependency Injection)来管理各个组件之间的依赖关系。

这种松耦合的设计使得各个组件可以独立开发、测试和部署。

•高效性能:SSH框架采用了多种优化技术,如缓存、懒加载等,来提高应用程序的性能。

同时,Hibernate作为数据访问层的组件,可以利用其自身的缓存机制来减少数据库访问次数,进一步提高性能。

•安全性:SSH框架提供了多种安全措施,如用户认证、权限控制等,以保护应用程序的安全。

同时,SSH框架还支持HTTPS协议,可以加密数据传输,提高数据的安全性。

3. SSH框架的核心组件SSH框架由三个核心组件组成:•Spring:Spring是一个轻量级的Java开发框架,它提供了依赖注入、面向切面编程等功能。

在SSH框架中,Spring负责处理应用程序的业务逻辑。

通过使用Spring的IoC容器和AOP技术,开发人员可以更方便地管理各个业务组件之间的依赖关系,并实现横切关注点的模块化。

•Struts:Struts是一个基于MVC设计模式的Web开发框架,它负责处理应用程序的Web层。

在SSH框架中,Struts作为前端控制器接收用户请求,并将请求转发给相应的业务处理组件。

通过使用Struts的标签库和拦截器机制,开发人员可以更方便地实现表单验证、页面跳转等功能。

SSH各框架工作原理

SSH各框架工作原理

SSH各框架的工作原理struts1的工作原理:1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。

(面向对象思想)2.发送HTTP请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。

3.form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

4.将请求派发到具体的Action处理:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。

5.处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。

服务器通过ActionForward对象进行转发工作。

6.返回目标响应对象:Action将业务处理的不同结果返回一个目标响应对象给总控制器。

7.转换HTTP请求到目标响应对象:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。

8.响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。

struts-config.xml模型(ActionForm)业务功能类(JavaBean)1、初始化3、填充Form2、HTTP请求JSP页面Struts框架总控制器(ActionServlet)7、转换HTTP请求到目标响应对象8、HTTP响应4、将请求派发到具体的Action处理6、返回目标响应对象5、调用后台业务功能处理业务业务功能控制器(Action)Struts2工作原理:1初始化:客户端初始化一个指向Servlet容器(例如Tomcat)的请求2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action4如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5.ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6.ActionProxy创建一个Action Invocation的实例。

详解ssh框架原理及流程

详解ssh框架原理及流程

详解ssh框架原理及流程什么是SSHSSH是 struts+spring+hibernate的⼀个集成框架,是⽬前较流⾏的⼀种web应⽤程序开源框架。

SSH不是⼀个框架,⽽是把多个框架(Struts、Spring以及Hibernate)紧密的结合在⼀起,⽤于构建灵活、易于扩展的多层Web应⽤程序。

SSH框架的系统从职责上分为四层:表⽰层、业务逻辑层、数据持久层和域模块层(实体层)。

SSH(Struts2+Spring+Hibernate)框架的项⽬,该架构主要分为三个层次:(1)Struts2:负责web层(2)Spring:业务层的管理(3)Hibernate:负责数据持久化Struts2⼯作原理:1.初始化⼀个指向servlet容器的请求。

2.请求经过web.xml中配置的过滤器过滤,FilterDispatcher(struts2控制器的核⼼)询问ActionMapper是否需要调⽤某个Action来处理这个请求。

如果ActionMapper决定需要调⽤某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

3.ActionProxy通过配置⽂件Struts.xml配置⽂件找到需要调⽤的Action类。

4.ActionProxy创建⼀个ActionInvocation实例,同时ActionInvocation通过代理模式调⽤Action。

但在调⽤之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

5.Action执⾏完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。

即开发⼈员通过发送http请求,这个请求经过web.xml的过滤器过滤看看是否要调⽤某个action,如果有则在Struts.xml找到该请求的实现的⽅法,然后返回运⾏的结果。

Hibernate⼯作原理:1. 读取并解析配置⽂件2.读取并解析映射信息,创建SessionFactory3. 打开Sesssion4.创建事务Transation5. 持久化操作6.提交事务7.关闭Session8. 关闭SesstionFactory即通过spring管理的Hibernate初始化时加载了xxx.hbm.xml然后读取解析映射信息,创建了SessionFactory。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts1的工作原理Struts1工作原理图:1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml 中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。

(面向对象思想)2、发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。

3、form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

4、派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。

5、处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。

服务器通过ActionForward对象进行转发工作。

6、返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。

7、查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。

8、响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。

ssh框架启动流程系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。

其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。

具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。

系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet 接收到的Request委派给相应的Action处理。

在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。

这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。

而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

Struts1与struts2有什么不同1.Action类Stuts1要求Action类继承一个抽象基类。

Struts1的一个普通问题是使用抽象类编程而不是接口。

Struts2 Action类可以实现一个Action接口,也可以实现其它接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现常用的接口。

Action 接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

2. 线程模式:Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。

单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。

Action资源必须是线程安全的或同步的。

Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

3. Servlet依赖:Struts1 Action依赖于Servlet API,因为当一个Action被调用时,HttpServletResquest和HttpServletResponse被传递给execute方法,即Action依赖了容器,测试变得非常麻烦。

Struts2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

但是,其它的元素减少或者消除了直接访问HttpServletRequset和HttpServletResponse的必要性。

4.捕获输入:Struts1使用ActionForm对象捕获输入。

所有的ActionForm必须继承一个基类。

因为其它JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。

动态Bean 可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述已经存在的JavaBean,仍然会导致有冗余的javabean。

Struts2直接使用Action属性作为输入属性,消除了对第二输入对象的需求。

Action属性能够通过web页面上的taglibs访问。

Struts2也支持ActionForm模式。

(Struts2用普通的POJO 来接收数据)5.表达式语言:Struts1整合了JSTL,但对集合和索引属性的支持很弱。

Struts2可以是使用JSTL,但是也支持一个更加强大和灵活的表达式语言“Object Graph Notation Language”(OGNL—对象图导航语言).6. 绑定值到页面(view): Struts1使用标准JSP机制把对象绑定到页面中来访问,Struts1要传递值的时候必须往request里放、往session里放,然后再传递到jsp里面,el表达式得到。

Struts2使用“ValueStack”技术,使taglib 能够访问值而不需要把你的页面和对象绑定起来。

ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面。

值栈技术非常著名。

不需要request、不需要session,直接从Action中取值。

7.类型转换: Struts1 ActionForm属性通常都是String类型。

Struts1使用Commons-Beanutils进行类型转换。

每个类一个转换器,对每一个实例来说是不可配置的。

Struts2 使用OGNL进行类型转换。

提供基本和常用对象的转换器。

8.校验:Struts1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。

同一个类可以有不同的校验内容,但不能校验子对象。

Struts2支持通过validate方法和Xwork校验框架来进行校验。

Xwork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

9.Action执行的控制:Struts1支持每一个模块有单独的RequestProcessors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

(服务器重启时,Action生命周期结束,即生命周期无法控制)。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。

堆栈能够根据需要和不同的Action一起使用。

(可以控制Action的生命周期)简单的说:struts1 和struts2的核心原理不同:struts1.X是基于servlet的struts2是xwork的变体:他的核心是filterstruts1是单例模式开发,struts2是多例模式。

struts1的单例模式好处是节省内存,缺点是并发性查,非同步。

struts2好处是线程安全是同步的每次使用开辟新的内存空间,缺点是占用资源多。

Model1的原理:Struts1的工作原理:图2它引入了"控制器"这个概念,控制器一般由servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑,并将处理结果返回到合适的页面。

因此,这个servlet控制器为应用程序提供了一个进行前-后端处理的中枢。

一方面为输入数据的验证、身份认证、日志及实现国际化编程提供了一个合适的切入点;另一方面也提供了将业务逻辑从JSP文件剥离的可能。

业务逻辑从JSP页面分离后,JSP文件蜕变成一个单纯完成显示任务的东西,这就是常说的View。

而独立出来的事务逻辑变成人们常说的Model,再加上控制器Control本身,就构成了MVC 模式。

实践证明,MVC模式为大型程序的开发及维护提供了巨大的便利。

其实,MVC开始并不是为Web应用程序提出的模式,传统的MVC要求M将其状态变化通报给V,但由于Web浏览器工作在典型的拉模式而非推模式,很难做到这一点。

因此有些人又将用于Web应用的MVC称之为MVC2。

正如上面所提到的MVC 是一种模式,当然可以有各种不同的具体实现,包括您自己就可以实现一个体现MVC思想的程序框架,Struts就是一种具体实现MVC2的程序框架。

它的大致结构如图三所示:图三图三基本勾勒出了一个基于Struts的应用程序的结构,从左到右,分别是其表示层(view)、控制层(controller)、和模型层(Model)。

其表示层使用Struts 标签库构建。

来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。

Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

过程如图四所示:图四这里要特别说明一下的是:就是Action这个类,上面已经说到了它是Struts中真正干活的地方,也是值得我们高度关注的地方。

可是,关于它到底是属于控制层还是属于模型层,存在两种不同的意见,一种认为它属于模型层,如:《JSP Web编程指南》;另一些则认为它属于控制层如:《Programming Jakarta Struts》、《Mastering Jakarta Struts》和《Struts Kick Start》等认为它是控制器的一部分,还有其他一些书如《Struts in Action》也建议要避免将业务逻辑放在Action类中,也就是说,图3中Action后的括号中的内容应该从中移出,但实际中确有一些系统将比较简单的且不打算重用的业务逻辑放在Action中,所以在图中还是这样表示。

相关文档
最新文档