浅析开放架构SSH 框架在测评系统开发中的应用
文/韩光磊
在系统开发中,架构技术对系统的稳定性起到了决定性的作用,目前普遍采用开放架构技术,基于开放架构的系统,功能模块可以按需添加或删除,SSH 系统框架技术是开发人员的首选,在目前的系统实际开发中比较流行,本文就以开发测评系统为例,主要讨论SSH 框架技术在测评系统开发中的应用。
【关键词】系统开发 开放架构 SSH 测评系统
1 SSH框架技术简介
SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种Web 应用程序开源框架。
集成SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,其中使用Struts 作为系统的整体基础架构,负责MVC 的分离,在Struts 框架的模型部分,利用Hibernate 框架对持久层提供支持,业务层用Spring 支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java 对象,然后编写基本的DAO(Data Access Objects) 接口,并给出Hibernate 的DAO 实现, 采用Hibernate 架构实现的DAO 类来实现Java 类与数据库之间的转换和访问,最后由Spring 完成业务逻辑。系统的基本业务流程是: 在表示层中,首先通过JSP 页面实现交互界面,负责传送请求(Request) 和接收响应(Response), 然后Struts 根据配置文件(struts-config.xml) 将ActionServlet 接收到的Request 委派给相应的Action 处理。在业务层中,管理服务组件的Spring IoC 容器负责向Action 提供业务模型(Model) 组件和该组件的协作对象数据处理(DAO) 组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate 的对象化映射和数据库交互,处理DAO 组件请求的数据,并返回处理结果。采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。下面以一个测评系统为例来展示如何进行基于SSH 框架的系统开发。由于系统的模块较多,下面就以一个系统登录模块为例来说明系统的开发实现过程,并将按照数据持久层、业务逻辑层、表示层的顺序说明系统构建过程。
2 测评系统功能模块简介
在实际应用中,测评的功能模块比较多,各管理功能模块如下:
系统管理(系统用户、管理菜单、角色管理、权限管理、系统备份…)基础数据(职业群、职业库、能力分类、能力库、量表库、测评题库…)
测评管理(测评记录、成绩录入、推荐量表、定制量表、就业推荐…)
统计查询(用户统计、业务统计、资源统计…)
客户管理(外部用户、内部用户…)
参数管理(系统参数、学历管理、学科代码、工作特长…)
由于系统的模块较多,下面就以一个系
统登录模块为例来说明系统的开发实现过程,并将按照数据持久层、业务逻辑层、表示层的
顺序说明系统构建过程。
3 使用SSH框架技术实现测评系统登录模块
3.1 数据持久层(实现DAO层)
数据持久层由Java 对象持久化类和数据访问对象(DAO) 组成。DAO 层的主要功能是完成数据库的相关工作,因此在实现具体的类之前,要先进行底层数据库的创建,每个数据库表都对应着一个持久化对象,
(1) 在com.skillstest.dao 包中创建UserDao 接口, 在UserDao 接口中添加getAccount(String username) 方法,根据客户名获取账户对象。
package com.skillstest.daoimport java.util.Listpublic interface UserDao{
// 根据客户名获取账户对象p u b l i c Ac c o u n t g e tAc c o u n t (St r i n gusername);
…// 此处省略其他方法
}(2) 在com.skillstest.dao.impl 包中创建UserDao 接口的实现类UserDaoImpl, 实现getAccount(String username) 方法。
(3) 在Spring 配置文件中定义UserDaoImpl, 并给其继承的父类HibernateDaoSupport 中的sessionFactory 属性注入实例。
3.2 业务逻辑层(实现Biz层)
业务逻辑层由Spring 框架支持,提供了处理业务逻辑的服务组件。
(1) 在com.skillstest.biz 包中创建UserBiz 接口, 在UserBiz 接口中添加getAccount(String username) 方法,根据客户名获取账户对象。
package com.skillstest.biz;
import java.util.List;
import org.springframework.transaction.
annotation.Isolation;
import org.springframework.transaction.
annotation.Propagation;
import org.springframework.transaction.
annotation.Transactional;
import com.skillstest.entity.*;
public interface UserBiz{
public abstract Account getAccount(String
username);
..// 此处省略其他方法}
(2) 在com.skillstest.biz.impl 包中创建UserBiz 接口的实现类UserBizImpl,实现getAccount(String username) 方法。
(3) 在Spring 配置文件中定义
UserBizImpl,并给其属性userDao 注入实例。
3.3 表示层(实现Action)
在com.skillstest.action 包中创建UserAction类,继承ActionSupport 类,实现RequestAware和SessionAware 接口。在UserAction 类中编写下面两个方法。
(1)编写用于登录表单校验的方法,由于登录页面login.jsp 中的表单将提交给UserAction 类的login 方法处理, 因此其表单校验的方法命名为validateLogin。在validateLogin 方法中,调用业务逻辑UserBiz的getAccount 方法根据账户名获取账户对象,并根据关联映射,账户对象中包含了相关联的个人信息对象。
(2)编写方法名为login 的方法,用于将账户信息和个人信息存入session,并进行页面跳转。
4 总结
本文通过对SSH 框架技术的分析介绍,并且通过其在实际项目中的应用,验证了采用此种开放架构技术可以帮助开发人员在短期内快速搭建可按需扩展的系统功能模块。本文仅概述了现代最流行的开源框架(SSH)。还有更多框架尚未描述,而许多框架通过扩展另外的MVC 框架在内部被成功开发。相信在不久的将来,开发框架的技术会更先进、更多元!
参考文献
[1] 李刚.Struts2 权威指南——基于WebWork核心的MVC 核心开发[M]. 北京: 电子工业出版社,2008.
[2] 谭待, 谭人杰. 基于Spring 与Hibernate的J2EE 持久层解决方案[J]. 铁路计算机应用,2007(10).
[3] 韩义亭, 张成宇.SSH 架构及其在Web开发中的应用[J]. 网络安全技术与应用,2007(10).
[4] 杨俊, 许日丹. 基于Struts+Hibernate+Spring轻量级框架的Web 应用开发[J]. 福建电脑,2008(02).
作者单位
天津职业技术师范大学 天津市 300222