15.1 概述
15.1.1应用程序的分层
在前面学习了Struts2中的各个核心技术和多种组件,但是,在真正做项目的时候,Struts2只是帮我们处理Web层的日常任务和常见问题,那么,其他的部分呢?
在实际项目开发的时候,通常把程序划分成很多层次,也就是分层开发,比如大家熟悉的三层开发:表现层、逻辑层、数据层,它们的职责分别是:
- 表现层:展示数据、人机交互、收集参数并调用逻辑层
- 逻辑层:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层等
- 数据层:实现数据持久化、实现对象和持久化数据的双向映射等
在这三层交互的时候,通常有如下约定:
- 表现层调用逻辑层,逻辑层调用数据层,不能反向调用,也不会跨层调用。
- 层间交互应该通过接口进行调用,以确保各层实现独立变化。
图15.1 表现层、逻辑层、数据层之间的关系
Struts2就是一个表现层的框架,接下来就来看看动作类Action如何调用逻辑层组件,通过一个简单得示例来做说明,只是做出示范性质的逻辑层接口与逻辑层实现,并不实现实际的功能。示例代码如下:
java代码:
- public interface SampleService {
- public String getNameById(String userId);
- }
- public class SampleServiceImpl implements SampleService{
- public String getNameById (String userId) {
-
- String name = "hello,"+ userId;
- return name;
- }
- }
接下来写一个示范性质的Action,实现根据用户输入的编号去获取用户名字的功能,Action中会先得到用户的编号,然后去调用逻辑层接口获取用户名字,将名字保存下来供下一个页面使用。示例代码如下:
java代码:
- public class SampleAction extends ActionSupport{
- private String name;
- private String userId;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getUserId() {
- return userId;
- }
- public void setUserId(String userId) {
- this.userId = userId;
- }
-
- public String execute() throws Exception {
- SampleService sampleService = new SampleServiceImpl();
- name = sampleService.getNameById(userId);
-
- return SUCCESS;
- }
- }
注意:在前面讲过表现层在调用逻辑层的时候,通常应该通过接口调用。仔细看一下,这个Action代码写的符合要求吗?
Action作为表现层组件,在调用逻辑层组件的时候,只应该知道逻辑层组件的接口,也就是SampleService接口,但是在execute方法里还是出现了逻辑层组件的实现类,也就是SampleServiceImpl类,这显然是不符合要求的,那怎么办呢?
不要着急,继续往下看,其中一个优秀的解决方案就是使用Spring。
15.1.2使用Spring管理对象间的依赖关系
在上一节的示例中,SampleAction调用了SampleServiceImpl的方法,也可以这么说,SampleAction作为客户端依赖于SampleServiceImpl这个服务端。那么,该怎么管理它们之间的依赖关系呢?很显然,可以借助Spring框架来管理对象间的依赖关系。
Spring的知识很多,这里并不会详细讲解Spring的知识,只是一起来看看Struts2和Spring如何结合起来,并使用Spring框架的IoC/DI容器来管理对象之间的依赖关系。
另外,这里只讲述Spring中和Struts2相关的知识,更多Spring的知识,请参看Spring的文档或是资料。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/4135.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
这个压缩包中的“研磨Struts2配书视频对应的演示源代码”是《研磨Struts2》一书作者为了帮助读者更好地理解和实践书中理论知识而提供的实际示例代码。 首先,让我们深入理解Struts2的核心概念和技术特性: 1. **...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
此外,PPT可能还会涵盖Struts2的插件系统,如Tiles、FreeMarker和JSP视图技术的集成,以及如何使用Struts2与Spring、Hibernate等其他框架进行整合,实现松耦合的企业级应用。Struts2的国际化和本地化支持也是重要的...
相比于第一代Struts框架,Struts 2提供了更多的功能,如拦截器、动态方法调用、更强大的表单处理机制等,并且它与Spring和Hibernate等其他Java EE技术栈的集成更加紧密。 ### Struts 2的特点 1. **强大的表单处理...
研磨Struts2 高清完整版,请和第一部分一起下载啊
研磨Struts2_12859679_高清完整版
《研磨Struts2》这本书主要介绍了Struts2的基础知识、实践应用以及其核心概念。 1. **MVC模式**:MVC是一种设计模式,用于分离应用程序的业务逻辑、数据和用户界面。在Struts2中,Action类代表Controller,负责处理...
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式...
光纤及研磨工艺概述.pptx
第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式...
Java工程师三大框架面试题.pdf
第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式...