1.什么是ssh?

SSH对应 struts spring hibernate

struts 采用MVC模式,主要是作用于用户交互

spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合

hibernate 是对象持久化框架,其实就是实体类和数据库表建立关系,操作类就会触发相应的sql语句,可以不用写任何sql语句,完成数据库编程

SSH就是Struts + Spring + Hibernate 3个Java框架的集合,现在Java开发中常用的框架组合。用来开发后台,与前台和数据库进行数据交互。

2.什么是Struts2

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小

设计目标

Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。

技术优势

Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。

二是提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。

因为struts2有这样目标,并且有这样的优势,所以,这是我们学习struts2的理由,下面,我们在深入剖析一下struts的工作原理。

 

struts2的优/缺点:

优点:

这里有一些强大的功能,可能会迫使你考虑Struts2:

  • POJO表单和POJO动 - Struts2的Struts框架已经摆脱了动作表单组成部分, Struts2可以使用任何POJO接收的形式输入。同样现在可以看到任何POJO作为一个Action类。
  • 标签支持 - Struts2中,提高了表单标签和新标签允许开发人员编写更少的代码。
  • AJAX 支持- Struts2中已确认由Web2.0技术接管,并整合到产品中,通过创建AJAX标签,功能非常相似的标准Struts2 标签AJAX支持。
  • 易于整合 - Struts2 集成各种整合与其他框架如Spring,Tiles 和SiteMesh是现在更容易。
  • 模板支持 - 支持生成使用模板。
  • 插件支持 - 可以提高核心Struts2的特性,并增强使用插件。大量的插件可供Struts2。
  • 性能分析 - Struts2的分析,调试和分析应用程序提供了集成。除此之外,Struts还提供了集成的内置调试工具调试。
  • 易于修改标签 - Struts2的标签标注,可以调整使用Freemarker的模板。这并不需要JSP或Java知识。基本HMTL,XML和CSS知识是足够修改标签。
  • 提倡少配置 - Struts2 促进较少的配置的帮助下,使用默认的各种设置值。不必配置的东西,除非它不符Struts2的默认设置。
  • 视图技术: - Struts2中有一个很大的支持多个视图选项 (JSP, Freemarker, Velocity 和 XSLT)

以上只是Struts2的十大功能,这使得它是企业公司级应用框架。

缺点:

虽然Struts 2 的配备了一个伟大的功能列表,但我不会忘记提及关于Struts2一些缺点,将需要大量的改进措施:

  • 更大的学习曲线 - 要使用MVC与Struts,你必须是习惯使用标准的JSP,Servlet API和大量精心设计的框架。
  • 欠佳的文档 - Struts有标准的servlet和JSP API的相比,更少的在线资源,许多用户第一时间发现网上Apache文档混乱和管理不善的组织。
  • 较少透明度 - Struts应用程序中,有很多幕后比正常的基于Java的Web应用程序,这使得它很难理解的框架。

最后一点,一个好的框架应该提供通用的特性,许多不同类型的应用程序,可以利用它。 Struts 2是一个最好的网络架构和高度被用于开发富Internet应用程序(RIA)。

 

3.什么是Spring?

Spring是一个轻量级的DI和AOP容器框架。

说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。

DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。

AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。Spring支持用户自定义切面。

面向切面编程是面向对象编程的有力补充。面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。如对象的创建、销毁、回调等。

框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。

Spring的优/缺点:

优点:

1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑

2.可以提供众多服务,事务管理,WS等。

3.AOP的很好支持,方便面向切面编程。

4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等

5.Spring DI机制降低了业务对象替换的复杂性。

6.Spring属于低侵入,代码污染极低。

7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

缺点:

1.项目有时会抽风,无缘无故的报错,而且报的错也很神奇

4.什么是hibernate?

Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了。其实对于对象来说就是持久化。

扫盲----------------------------------------

持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。

JDBC就是一种持久化机制。文件IO也是一种持久化机制。

日常持久化的方法:

1、将鲜肉冷藏,吃的时候再解冻的方法也是。

2、将水果做成罐头的方法也是。

我们从三个角度理解一下Hibernate:

一、Hibernate是对JDBC进一步封装

原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。

二、我们再从分层的角度来看

我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。

三、Hibernate是开源的一个ORM(对象关系映射)框架。

ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。

Hibernate的核心:

从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。

1Configuration接口:负责配置并启动Hibernate

2SessionFactory接口:负责初始化Hibernate

3Session接口:负责持久化对象的CRUD操作

4Transaction接口:负责事务

5Query接口和Criteria接口:负责执行各种数据库查询

注意Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

Hibernate的优/缺点:

优点:

1、更加对象化

以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。

2、移植性

因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。

3、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。

对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。

4、Hibernate代码测试方便。

5、提高效率,提高生产力。

缺点:

1、使用数据库特性的语句,将很难调优

2、对大批量数据更新存在问题

3、系统中存在大量的攻击查询功能

 

SSH框架详解的更多相关文章

  1. [JavaEE] SSH框架笔记_eclipse搭建SSH框架详解

    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作. 下载好eclipse,Struts2,Spring,Hibe ...

  2. eclipse Indigo搭建SSH框架详解

    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作.   下载好eclipse,Struts2,Spring,Hi ...

  3. eclipse的ssh框架详解

    1.创建项目 2.导包 1.1:导入Struts2可能用到的包: 先从网站下载 再这里找出,打开它把WEB-INF/lib/下的所有包导入项目   1.2:导入spring可能用到的包: 先从网站下载 ...

  4. java SSH框架详解(面试和学习都是最好的收藏资料)

    Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...

  5. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

  6. mina框架详解

     转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...

  7. lombok+slf4j+logback SLF4J和Logback日志框架详解

    maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...

  8. [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解

    Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂.Core Data 相关的类比较多,初学者往往不太容易弄懂.计划用三个教程来讲解这一部分: 框架详解 ...

  9. iOS 开发之照片框架详解(2)

    一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...

随机推荐

  1. SqlServer自动化分区

    1.新增文件组 ALTER DATABASE [Test] ADD FILEGROUP FG2010 ALTER DATABASE [Test] ADD FILEGROUP FG2011 ALTER ...

  2. RichTextBox着色与着色不闪

    近来写的一个数据查询分析器意外的快捷,不到两晚工夫就搞定了.完成度相当的高.当然少不了关键字着色,不过着色的代码来自的网上,看了一下感觉过多的循环 //文本框改变事件 int index = this ...

  3. 轻松创建R语言函数包

    讲真,用R这么几年,始终未尝试过写自己的包,看来这就是我与真正程序员的差距了——编程习惯等于没有. 昨天一个偶然的机会想开始写自己的工具包,发现了前期教程的有一些过时.于是,写一个**windows* ...

  4. Android学习地址

    Google Android官方培训课程中文版http://hukai.me/android-training-course-in-chinese/

  5. CentOS7 服务器 JDK+TOMCAT+MYSQL+redis 安装日志

    防火墙配置(参考 CentOS7安装iptables防火墙) 检查是否安装iptables #先检查是否安装了iptables service iptables status #安装iptables ...

  6. C#.net 中 修饰符 详解 (来自MSDN)

    自己理解的不够深刻,无奈基础较差!记上一笔,记忆深刻些,哈哈…… 1. 访问修饰符 public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员. private 只有同一 ...

  7. Android--多媒体操作

    ---恢复内容开始--- 1.拍照,这里直接上代码,看注释就好 public void onCreate(Bundle savedInstanceState) { super.onCreate(sav ...

  8. [Cocoa设计模式] 动态创建

    Cocoa利用底层Objective-C运行时的很多特性,包括能够创建在应用程序编译时不存在的类的实例并在运行时动态加载和链接新类.诸如Ruby, Perl, Python之类的脚本语言就利用这种技术 ...

  9. 网页版视频网站可以用html5来实现吗?

    当然可以用html5来实现视频网站,而且html5的诞生完全符合了百度优化,百度蜘蛛对这类的网站友好度非常高,会尽量会给高的权重,但是现在很多做 这类网站的开发还是比较习惯用websocket,这个东 ...

  10. blogilo在chinaunix发布博客的设置

    1. 在日志类型菜单中选择"Metaweblog API". 2. 在日志的远程发布url中输入"http://blog.chinaunix.net/xmlrpc.php ...