Struts+Spring+Hibernate配置及应用
Struts,Spring和Hibernate是目前JAVA企业级开发最流行的开源框架,俗称为SSH框架。本文旨在介绍如何将三个框架整合起来,以满足企业级开发应用。
本框架采用的版本如下:
Struts: 1.2
Spring:2.5.5
Hibernate:3.3.1
2体系架构
图1 集成ssh框架系统架构图
从上图可见,我们的系统架构分成了四层:表示层、业务逻辑层、数据持久层、域模型层。
在软件架构设计中,软件的层用包来描述,层之间的关系表现为包之间的关系。因此我们将系统划分为如下几个包:
图2 包结构图
上图中显示的包和层之间的对应关系如下:
层
|
接口包
|
实现包
|
表现层
|
|
cn.ittrain.myproject.action
|
业务逻辑层
|
cn.ittrain.myproject.service
|
cn.ittrain.myproject.service.impl
|
数据持久层
|
cn.ittrain.myprojject.dao
|
cn.ittrain.myprojject.dao.impl
|
域模型层
|
|
cn.ittrain.myproject.domain
|
对业务逻辑层和数据持久层,为什么要分别有接口包和实现包?我们先来弄清楚所谓的依赖关系。如果A层调用B层的功能,那么我们说A层依赖于B层。反过来如果B层也调用A层的功能,那么我们说B层依赖于A层。可以想象,如果AB层互相依赖的话,那么我们的程序将是强耦合的,即各个部分关联在一起,牵一发而动全身,显然是很糟糕的设计。因此在软件设计中,我们一般将层设计为单向依赖。A层依赖于B层,但B层不依赖于A层。由于层和包有对应关系,因此包和包之间也存在着类似的依赖关系。在图2中,包的依赖关系是通过虚线箭头来表示的,箭头所在包为被依赖包。
在业务逻辑层,我们定义了两个包:service和service.impl。从图中可以看出,action包依赖与service包,但不依赖于service.impl包,这在传统的架构中是不可能的。service包中是接口,service.impl包中是service包中接口的实现,action包不依赖于service.impl包,就意味着不会调用其中的类的方法,这显然是不可能的。而之所以可能是因为Spring的存在,service.impl包中的对象由Spring容器生成并注入到action包中的对象中,因此action包可以不依赖于service.impl包,而只是依赖于service接口包。如果我们修改service.impl包中的实现,action包不受影响。可见Spring依赖注入的思想极大地松散了我们的程序结构。
我们已经知道了包之间的依赖关系。但我们还要弄清楚包中的类和它所依赖的包中的类之间的关系。下图显示了包中的对象之间的关联关系以及多重性关系。
图3 系统对象关系图
一个Action对象(即Action包中产生的对象)依赖于一个Service对象(Service对象是由Spring注入的bean)。一个Service对象依赖于多个DAO对象(DAO对象是由Spring注入的bean)。
一个Action、Service和DAO对象依赖于多个Domain对象。所以我们在做项目的时候应该将复杂的业务逻辑封装在Service中。下图是一个典型的对象调用的例子:
图4 系统对象协作图
上图中的数字表示对象调用顺序。图中一个Action对象调用一个Service对象,一个Servvice对象调用两个DAO对象:DAO1和DAO2。DAO1和DAO2分别调用Domain对象。
3配置Spring
3.1在MyEclipse配置Spring
1. 生成Web工程。
2. 选中工程,点击右键,弹出菜单,选择MyEclipse->Add Spring Capabilities
3. 根据向导选定Spring的版本。
4. 生成Spring的缺省配置文件applicationContext.xml,该文件缺省生成在src目录下,也可以修改成其它目录,如目录WEB-INF。
3.2更新Spring的库
在MyEclipse中配置好Spring后,MyEclipse将把Spring的库拷贝到工程中。在MyEclipse提供的Spring库是按模块区分的,我们可以将最新的Spring 2.5.5的库整合后替代MyEclipse提供的库,下面的四个库文件基本上涵盖了所有Spring的功能。
spring-2.5.5.jar
aspectjrt-1.6.0.jar
aspectweaver-1.6.0.jar
spring-webmvc-struts-2.5.5.jar
3.3配置Spring容器监听器
在web应用程序中,Spring容器不会自动生成,而必须由web服务器通过web监听器来生成。该监听器读取Spring配置文件,然后生成Spring容器。监听器的配置如下:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
因为监听器是通过WebApplicationContext去读取配置文件applicationContext.xml,因此配置文件应该存放在WEB-INF目录下。如果配置文件存放在其它目录,例如存放在src目录下,那么应该在web.xml文件中指定配置文件的存放路径。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
3.4生成多个Spring配置文件
在实际应用中为了实现分层管理,我们可以将Spring的配置文件切分为多个(将applicationContext.xml复制然后改名即可)。例如我们生成了四个配置文件:
配置文件名
|
存放路径
|
作用
|
applicationContext-common.xml
|
WEB-INF
|
SessionFactory,Transaction
|
applicaitonContext-action.xml
|
WEB-INF
|
Struts action bean
|
applicationContext-service.xml
|
WEB-INF
|
Service bean
|
applicationContext-dao.xml
|
WEB-INF
|
DAO bean
|
将配置文件切分为四个的目的是为了使我们的程序更加清晰。
但是,生成上面的多个配置文件后,Spring不再能够识别它的配置文件,这是应该在web.xml中增加以下元素以告诉监听器查找并识别Spring的配置文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
3.5修改.springBeans文件配置
在.springBeans中增加以下配置:
<configs>
<config>WebRoot/WEB-INF/applicationContext-common.xml</config>
<config>WebRoot/WEB-INF/applicationContext-action.xml</config>
<config>WebRoot/WEB-INF/applicationContext-service.xml</config>
<config>WebRoot/WEB-INF/applicationContext-dao.xml</config>
</configs>
然后刷新工程。
4配置Struts
4.1为工程增加Struts框架
选中工程,点击右键,弹出菜单,选择MyEclipse->Add Struts Capabilities。
Struts 1.2的action对象是由Struts框架生成的,现在我们将action交由Spring容器来生成。
1. 在struts-config.xml文件中,增加以下元素:
<controller>
<set-property value="org.springframework.web.struts.DelegatingRequestProcessor"
property="processorClass"/>
</controller>
2. 通过struts 向导生成action后,在struts-config.xml文件中会自动添加以下元素:
<action-mappings >
<action path="/student" type="test.StudentAction" />
</action-mappings>
3. 在applicationContext-action.xml中配置相应的Action bean:
<bean name ="/student"
class="cn.ittrain.myproject.action.StudentAction"/>
每当生成一个action后,都必须在application-action.xml文件中增加一个bean的配置。
5配置Hibernate
5.1增加Hibernate框架
选中工程,点击右键,弹出菜单,选择MyEclipse->Add Hibernate Capabilities。
l 在Define Hibernate and Spring configuration details界面,
选定用于配置session factory的配置文件,从列表框中选取application-common.xml。
输入SessionFactory Id: sessionFactory
l 在Specify Hibernate database connection details界面选定Use JNDI DataSource。
DataSource:jdbc/mysql
Username:root
Password:root
Dialect:MySQL
l 在Define SessionFactory properties界面,不要在Create SessionFactory Class前面打勾,即不要创建SessionFactory Class。
1. 生成POJO类
数据库中的表对应于POJO类,表中的列对应与类中的属性,表中的一条记录对应一个对象
分享到:
相关推荐
简单struts+spring+hibernate搭建,配置,适合初学者
DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能
Struts1.2、Spring2.5和Hibernate3.2是经典的Java企业级开发框架组合,它们各自在应用程序的不同层次上发挥着重要作用。Struts1.2是一个MVC(Model-View-Controller)框架,主要负责处理用户界面与业务逻辑之间的...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
struts2+spring+hibernate 配置文件struts2+spring+hibernate 配置文件
在IT行业中,SSH(Struts + Spring + Hibernate)是一个经典的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。本项目通过SSH框架实现了图书管理系统的图书修改和删除功能,下面将详细介绍这三个核心组件...
基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh项目源码 基于struts+spring+hibernate+oracle的移动ssh...
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) ...
SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...
SSH(Struts+Spring+Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。这个教务管理信息系统是基于SSH框架实现的,提供了完整的源代码,可以直接运行,便于开发者学习和参考。 **...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part1
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1Struts1.2+Spring2.0+Hibernate3.1
Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例Struts 2+Spring 3+Hibernate框架技术精讲与整合案例...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part2
农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts 2 +spring+ hibernate农业网站 (ssh) struts ...
在这个项目中,"struts+spring+hibernate(mysql)用户登录及文件上传",开发者整合了这三个框架,并结合MySQL数据库实现了一个完整的用户管理系统,包括用户身份验证和文件上传功能。 首先,Struts是MVC(Model-View...
应广大网友需求,自己抽了点时间写了一个Struts2.0+Spring2.0+Hibernate3.1的登录及增删改查的完整演示示例,以此奉献给大家,由于本人水平有限,有写的不好的地方还望大家多提宝贵意见,如果有不明白的地方请关注我的...
SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它将MVC设计模式、依赖注入和持久层框架集成为一个整体,大大提高了开发效率和代码的可维护性。下面我们将深入探讨SSH框架的各个组成部分及其结合...