名词解释
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