SSH概述

名词解释

SSH:SSH不是一个框架,而是多个框架(Struts+Spring+Hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。

Struts:它通过采用 Java Servlet/JSP 技术,实现了基于JavaEE Web应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

Struts2:它是Struts的下一代产品,是在Struts和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。

Spring:简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Hibernate:它是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

层次划分

JavaEE的体系结构有三层:表示层、业务逻辑层和数据持久层。开发一个SSH项目,要遵循这三层模式。
用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(主要是DAO、业务逻辑和Struts的Action),而用Struts来完成页面的控制跳转。

开发一个项目,一般要先完成持久层数据连接,然后实现DAO,接着是业务逻辑,最后实现页面及逻辑控制。

demo设计

开发环境

Eclipse IDE for Java EE Developers + Mysql + Tomcat

数据库设计

创建一个Web项目,命名为“ssh”。该项目要实现学生、课程及成绩的增加、删除、修改、查找功能,需要三个表,即XSB表、KCB表、CJB表。其中XSB表中含有该学生所属专业的ID,且作为外键,故还应该有一个ZYB表。在登陆学生成绩管理系统时,如果没有登陆成功,就回到登陆界面,登陆成功后方可进行各种操作,所以还要有个DLB表。数据库名为XSCJ。

XSB

1、学生信息表结构

项目名 列名 数据类型 可空 默认值 说明
学号 XH 定长字符串型(char6) × 主键
姓名 XM 不定长字符串型(varchar8) ×
性别 XB 位型(bit) × 值约束:1/0。1表示男,0表示女
出生时间 CSSJ 日期时间型(datetime)
专业Id ZY_ID 整数型(int) ×
总学分 ZXF 整数型(int) 0 0<=总学分<160
备注 BZ 不定长字符串型(varchar500)
照片 ZP longblob

2、学生信息表样本数据

学号 姓名 性别 出生时间 专业 总学分 备注
081101 王林 1990-2-10 1 50
081102 程明 1991-2-01 1 50
081201 王敏 1989-6-10 2 42
081202 孙艳 1989-12-29 2 40 有一门功课不及格,待补考
081241 罗琳琳 1990-1-30 2 50 转专业学习
KCB

1、课程信息表结构

项目名 列名 数据类型 可空 默认值 说明
课程号 KCH 定长字符型(char3) × 主键
课程名 KCM 不定长字符串型(varchar12)
开学学期 KXXQ 整数型(smallint) 只能为1~8
学时 XS 整数型(int) 0
学分 XF 整数型(int) 0

2、课程信息表样本数据

课程号 课程名 开学学期 学时 学分
101 计算机基础 1 80 5
102 程序设计语言 2 68 4
206 离散数学 4 68 4
208 数据结构 5 68 4
CJB

1、学生成绩表结构

项目名 列名 数据类型 可空 默认值 说明
学号 XH 定长字符型(char6) × 主键
课程号 KCH 定长字符型(char3) × 主键
成绩 CJ 整数型(int) 0
学分 XF 整数型(int)

2、学生成绩表样本数据

学号 课程号 成绩
081101 101 80
081101 102 78
081101 206 76
ZYB

1、专业信息表结构

项目名 列名 数据类型 可空 默认值 说明
Id ID 整数型(int) × 增1 主键
专业名 ZYM 定长字符型(char12) ×
人数 RS 整数型(int) 0
辅导员 FDY 定长字符型(char8) ×

2、专业信息表样本数据

专业 人数 辅导员
计算机 150 黄日生
通信工程 131 赵红
DLB

1、登陆表结构

项目名 列名 数据类型 可空 默认值 说明
标志 ID 整数型(int) × 主键,是标志
登陆号 XH 定长字符型(char6) × 与XSB表学号关联
口令 KL 定长字符型(char20) 可以加密,长度为8~20

2、登录表样本数据

标志 登陆号 口令
1 081101 voidking
2 081102 voidking
XS_KCB

1、连接表结构

项目名 列名 数据类型 可空 默认值 说明
学号 XH 定长字符型(char6) × 主键
课程号 KCH 定长字符型(char3) × 主键

2、连接表样本数据

学号 课程号
081101 101
081101 102
081101 206

包设计

com.voidking.ssh.action:放置对应的用户自定义的Action类。由Action类调用业务逻辑来处理用户请求,然后控制跳转。

com.voidking.ssh.dao:放置DAO(数据访问对象)的接口,接口中的方法用来和数据库进行交互,这些方法由它们的类来实现。

com.voidking.ssh.dao.imp:放置实现DAO接口的类。

com.voidking.ssh.model:放置表对应的POJO类及映射文件*.hbm.xml。

com.voidking.ssh.service:放置业务逻辑接口。接口中的方法用来处理用户请求,这些方法由实现接口的类来实现。

com.voidking.ssh.service.imp:放置实现业务逻辑接口的类。

com.voidking.ssh.tool:放置公用的工具类,如分页类。

struts.properties:实现Struts2和Spring整合。

struts.xml:配置Action。

添加Spring开发

实现Hibernate持久层

实现DAO

实现业务逻辑层

实现Web层

源代码分享

改进设计

使用SSH自动生成表,或者通过表自动生成POJO类。

参考文档

《Java EE基础实用教程》,郑阿奇主编
SSH框架总结:http://blog.csdn.net/shan9liang/article/details/8803989
Struts1和Struts2:http://blog.csdn.net/bjyfb/article/details/8679523
手把手教你搭建SSH:
http://www.tuicool.com/articles/f2u6VrA
http://blog.csdn.net/zhaolijing2012/article/details/39700187
eclipse搭建SSH框架详解:http://blog.csdn.net/aaaaaaaa0705/article/details/6288431

0%