SSH概述

文章目录
  1. 1. 名词解释
  2. 2. 层次划分
  3. 3. demo设计
    1. 3.1. 开发环境
    2. 3.2. 数据库设计
      1. 3.2.1. XSB
      2. 3.2.2. KCB
      3. 3.2.3. CJB
      4. 3.2.4. ZYB
      5. 3.2.5. DLB
      6. 3.2.6. XS_KCB
    3. 3.3. 包设计
    4. 3.4. 添加Spring开发
    5. 3.5. 实现Hibernate持久层
    6. 3.6. 实现DAO
    7. 3.7. 实现业务逻辑层
    8. 3.8. 实现Web层
  4. 4. 源代码分享
  5. 5. 改进设计
  6. 6. 参考文档

名词解释

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