0%

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)
专业IdZY_ID整数型(int)×
总学分ZXF整数型(int)00<=总学分<160
备注BZ不定长字符串型(varchar500)
照片ZPlongblob

2、学生信息表样本数据

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

1、课程信息表结构

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

2、课程信息表样本数据

课程号课程名开学学期学时学分
101计算机基础1805
102程序设计语言2684
206离散数学4684
208数据结构5684
CJB

1、学生成绩表结构

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

2、学生成绩表样本数据

学号课程号成绩
08110110180
08110110278
08110120676
ZYB

1、专业信息表结构

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

2、专业信息表样本数据

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

1、登陆表结构

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

2、登录表样本数据

标志登陆号口令
1081101voidking
2081102voidking
XS_KCB

1、连接表结构

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

2、连接表样本数据

学号课程号
081101101
081101102
081101206

包设计

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