Struts+Spring+Hibernate进阶开端(一)
入行就听说SSH,起初还以为是一个东西,具体内容就更加不详细了,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本原理与思想,总算接地气了。想通过以博文的形式和大家一起分享,共同进步,在更新博文的过程中难免有认识不足的地方,还请各位大牛提出宝贵的建议,对于好的建议一定虚心接受,认真学习。
这篇博文仅仅是SSH的开端简介,简单介绍一下SSH以及三种框架的整体概览,后面的博文会对各部分的内容一一进行详细的介绍。
什么是SSH?
官方的说法:SSH是Struts+Spring+Hibernate的一个jicheng框架,是目前较流行的的一种web应用程序开源框架。 个人见解:SSH不是一个框架,而是把多个框架(Struts,Spring,Hibernate)紧密的结合在一起,用于构建灵活,易于扩展的多层Web应用程序。
SSH框架的系统从职责上分为四层:表示层,业务逻辑层,数据持久层和域模块层(实体层)。
我们通过下面这张图说明一下,三种框架的关系以及所包含的内容,内容已经很详细了,在这里就不做过多的解释了。
下面再详细看一下组成SSH的这三个框架。
Struts
1.什么是Struts?
从简单性来看,Struts是这三个框架中中最简单的一个。它是基于MVC的框架。它通过采用JavaServlet/Jsp技术,实现了基于JavaEE web应用的MVC设计模式的应用框架,是MVC的一个具体实现或者说是MVC的一个具体产品。
2.Struts的核心构成
Struts的核心同样也是MVC的核心,Struts是MVC的一个具体产品。
Model
由Action,ActionForm以及JavaBean组成,其中ActionForm用于将用户请求的参数,封装成为ActionForm对象,我们可以理解为实体。由ActionServlet转发给Action,Action处理用户请求,将处理结果返回到界面。
View
该部分采用JSP+大量的taglib,实现页面的渲染。
Controller
Controller是Struts的核心控制器,负责拦截用户请求,通过调用Model来实现处理用户请求的功能。
3.为什么使用Struts?
使用Struts作为系统的整体基础架构,负责MVC分离,将页面从业务逻辑分离出来,使用页面更加灵活多变,不会影响业务逻辑,简化了基于MVC的web程序开发,因而使得开发更见高效。
Hibernate
1.什么事Hibernate?
Hibernate是一个对象关系映射框架,它对JDBC进行了轻量级的封装,使得我们使用面向对象的思想操作关系型数据库。
2.Hibernate的核心构成
这部分内容不作过多的解释,上面导图中的解释已经很简单明了了。
3.为什么使用Hibernate?
(1)Hibernate是JDBC的轻量级的对象封装,它使得与关系型数据库打交道变得轻松自如。
(2)对象化,它使得我们可以面向对象的思想操作关系型数据库,简化了DAO层编码工作,使得开发更加对象化了。
(3)移植性更好,支持各种数据库,更换数据库异常简单,不需要改代码。
(4)实现了透明持久化,没有实现第三方框架或接口,没有侵入性,十个轻量级框架。
Spring
1.什么事Spring?
简单的说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
2.Spring的核心构成
IOC
IOC就是IOC,不是什么技术,是一种设计模式。通过依赖注入的方式,由Spring管理和控制对象之间的依赖关系,避免硬编码所造成的过度程序耦合。
AOP
Aop通过预编译方式和运行期动态代理实现程序功能的同意维护的一种技术。
容器
能管理对象的生命周期,对象与对象之间的依赖关系就是容器。
3.为什么使用Spring?
没有Spring,Struts和Hibernate可以很好的运行,我称这样的模式为“独木桥”,但是有了Spring,Struts和Hibernate能够更好的结合在一起,协调工作。我称这种模式为“阳光大道”。Spring的核心是IOC和AOP,Spring使得管理对象更加方便,极大降低组件之间的耦合度。实现了软件各层之间的解耦。Spring的优点还有很多。
总结
SSH不仅实现了视图,控制器与模型的彻底分离,而且还是先了业务逻辑层与持久层的分离。耦合度降低,系统的灵活性更好,可复用性高。同时,框架为我们提供了一些基础性的服务,是我们的开发更加简单,大大的提高了开发效率。
Struts+Spring+Hibernate进阶开端(一)的更多相关文章
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
[SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...
- Struts + Spring + Hibernate 进阶开端(一)
Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基 ...
- Struts+Spring+Hibernate项目的启动线程
在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...
- Struts,spring,hibernate三大框架的面试
Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...
- 用eclipse搭建SSH(struts+spring+hibernate)框架
声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...
- Struts+Spring+Hibernate整合入门详解
Java 5.0 Struts 2.0.9 Spring 2.0.6 Hibernate 3.2.4 作者: Liu Liu 转载请注明出处 基本概念和典型实用例子. 一.基本概念 St ...
- Struts+Spring+Hibernate、MVC、HTML、JSP
javaWeb应用 JavaWeb使用的技术,比如SSH(Struts.Spring.Hibernate).MVC.HTML.JSP等等技术,利用这些技术开发的Web应用在政府项目中非常受欢迎. 先说 ...
- velocity+spring mvc+spring ioc+ibatis初试感觉(与struts+spring+hibernate比较)
velocity+spring mvc+spring ioc+ibatis框架是我现在公司要求采用的,原因是因为阿里巴巴和淘宝在使用这样的框架,而我公司现在还主要是以向阿里巴巴和淘宝输送外派人员为 主 ...
- Struts+Spring+Hibernate处理Lob(Blob,Clob)
在使用struts+spring+hibernate的开发中,有些时候用户会有数据库存储文件的需求,在数据库中一般会采用Blob字段或Clob字段来存储二进制图片.流媒体或文件.现就将在实际开发中遇到 ...
随机推荐
- 转载:对#!/bin/sh的认识
转载网址:http://blog.163.com/hashes@yeah/blog/static/16867631220101029847420/ 对#!/bin/sh的认识 第一次学shell编程, ...
- 文成小盆友python-num6 -反射 ,常用模块
本次主要内容: 内容补充 python中的反射 常用模块 一,内容补充: 利用上次说到的递归的方法来实现阶乘. 说明:利用函数递归的方法来实现阶乘如: 1*2*3*4*5*6*7 代码实现如下: de ...
- JavaWeb学习笔记--4.EL表达式
四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...
- 当开始输入文字以及完成文字输入时,变换text field的背景以及系统自带一键删除的 叉叉
当开始输入文字以及完成文字输入时,变换text field的背景. -(BOOL) textFieldShouldBeginEditing:(UITextField *)textField{ [tex ...
- cs代码实现控件移动TranslateTransform
xaml: <Rectangle> <Rectangle.RenderTransform> <TranslateTransform x:Name="myTran ...
- cf C. Knight Tournament
http://codeforces.com/contest/357/problem/C #include <cstdio> #include <cstring> #includ ...
- FJ省队集训DAY4 T2
XXX #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #i ...
- ISO7816通讯协议在工控主板EM9160中的实现方案
在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议.工控主板EM9160为了适应这一新的技术需求,对其 ...
- Qt下使用的静态链接库------ *.lib转化为mingw使用的.a格式的静态库
使用MinGW附带的工具reimp.exe,该工具一般在MinGW in目录下,其readme文档在MinGWdoc eimp目录下, 方法很简单,比如: C:CodeBlocksMinGWlibdx ...
- linux磁盘限额配置:quota命令
LINUX下也有类似WINDOWS NTFS所用的磁盘限额,用的是quota来实现通过rpm -q quota确定是否已安装用quota只能对patation做限额,要做到针对某个目录来做只能靠ln ...