SSh三大框架的作用
一.详细分析spring+hibernate+struts作用?
1.struts是框架的表现层,Struts是对MVC构架的具体实现
Struts的MVC三层结构:
(1)视图层:Struts采用JSP作为MVC的视图。每一视图都是采用了定制标签库的JSP页面,这些定制标签库则由Struts框架提供。全部表单元素都是用定制标签编码的,所以这些页面能够很方便地同控制
器交互。每一个表单都通过映射JSP到Servlet的请求这一方式指向控制器特定入口点。
(2)控制层:控制器就是Java Servlet,由Struts框架提供,负责视图和模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的Java
类以进行相应的处理,控制器还指定下一个视图的位置。
(3)模型层:JavaBean就是模型的代表。对进入控制器的每个入口点来说,Bean的作用是存储从视图获取的信息,同时被称为“动作类”,一种Java类则被指定为对表单输入采取行动。动作类(Action
Class)实现了业务逻辑。
下面是Struts在框架结构中所负责的工作:
(1) 为用户管理请求和响应;
(2) 提供一个控制器代理调用业务逻辑和其它上层处理;
(3) 处理从其它层掷出给一个Struts Action的异常;
(4) 为显示提供一个模型;
(5) 执行用户接口验证。
2.Spring实现了反转控制(Inversion of Control)和面向方面编程(Achievement-Oriented Programming)。Spring框架的能实现应用的分层架构,在应用中要使用的对象可以被一个简单的XML文件连在
一起,这个XML文件含有到像事务管理器、对象工厂、包含业务逻辑的服务对象、和数据存取对象这些对象的引用。
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,其主要优势有如下几点:
(1) Spring能有效地组织你的中间层对象。
(3) 通过一种在不同应用程序和项目间一致的方法来处理配置文件,消除各种自定义格式的属性文件的需要,仅仅需要看看类的JavaBean属性。反转控制的使用帮助完成了这种简化。
(4) Spring能够帮助我们真正意义上实现针对接口编程。
(5) Spring的设计会让使用它创建的应用尽可能少的依赖于它的APIs,在Spring应用中的大多数业务对象没有依赖于Spring。
(6) 使用Spring构建的应用程序易于单元测试。
(7) Spring使EJB成为一个实现选择,而不是必需的选择。你可以用POJO或当地EJB来实现业务接口,却不会影响到调用代码。
(8) Spring能使用AOP提供声明性事务管理,可以不直接操作JTA也能够对事务进行管理。
(9) Spring为数据存取提供了一个一致的框架,不论是使用JDBC还是O/R mapping的产品。
(10) MVC Web框架,提供一种清晰,无侵略性MVC实现方式。
Spring业务层在框架中负责下面这些事情:
(1) 管理事务;
(2) 预留和其它层交互的接口;
(3) 管理业务层对象之间的依赖;
(4) 增加在表现层和持久层之间的灵活性,使它们互不直接通讯;
(5) 从表现层中提供一个上下文给业务层获得业务服务;
(6) 管理从业务逻辑到持久层的实现;
(7) 处理应用程序的业务逻辑和业务验证;
Hibernate是一种ORM映射工具,它不仅提供了从Java类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,使用Hibernate,可以大大减少操作数据库的工作
量。Hibernate可以和多种Web服务器或者应用服务器良好集成。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合
,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,Hibernate还可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate框架的优势有下面几点:
(1) Hibernate具有可扩展性;
(2) Hibernate既适用于独立的Java程序,也适用于Java Web应用,而且还可以在J2EE架构中取代CMP,完成持久化任务,Hibernate能集成到会话EJB和基于BMP的实体EJB中;
(3) Hibernate可以和多种WEB服务器,应用服务器良好集成,并且支持所有的数据库服务器;
(4) Hibernate有详细的参考文档,使用方便,容易上手。
下面是Hibernate持久层在框架中所负责的工作:
(1) 查询相关的信息成为对象。
Hibernate通过HQL的面向对象的查询语言或者使用条件表达式API来做这个事情。HQL非常类似于SQL。只是把SQL里的table和columns用Object和它的fields代替;
(2) 保存、更新、删除储存在数据库中的信息;
Hibernate这样的高级“对象-关系”映射框架提供对大多数主流SQL数据库的支持,它们支持“父/子”关系、事务处理、继承和多态。
域对象层主要做两件事:
(1) 编写相关接口: DAO类一般要使用Spring的声明式事务机制,而声明式事务机制是使用Spring AOP来实现的。Spring AOP默认使用的Java动态代理必须基于接口。本系统是面向接口编程;
(2)实现相关接口:在实现接口的同时,需要继承HibernateDaoSurpport类,这样可以省去对SessionFactory与HibernateTemplate的处理。
二.总概括spring+hibernate+struts作用
1.struts就是一个mvc的架构,在控制器,视图和模型方面都有其特定的组件,所以我们在SSH组合中,更多的是利用了controller这个组件。很多人感觉上是利用Struts的View层,的确是这样的,因为我
们应用了很多struts的标签,整个页面的工作核心还是在表单提交给action controller的动作上,而在struts的定义中,这是属于C这一层的。所以我们利用的确是controller。
2.spring的话最主要的功能还是它的ioc和aop,即注入依赖和面向切面编程它也有其自己的mvc,当然你可以用struts框架而不用spring的mvc.
3.Hibernate还可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任,使用Structs+Spring+Hibernate的项目主要是在web层利用了struts的mvc框架,在数据库层用hibernate的数据库访问功能,
在bean管理和服务方面利用spring的ioc和aop.
SSh三大框架的作用的更多相关文章
- eclipse中SSH三大框架环境搭建<二>
通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...
- eclipse中SSH三大框架环境搭建<一>
这里先简单介绍一下我用的三大框架版本以及下载地址 相关链接:eclipse中SSH三大框架环境搭建<二> eclipse中SSH三大框架环境搭建<三> struts-2.3.3 ...
- SSH三大框架整合案例
SSH三大框架的整合 SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 ...
- SSH三大框架的整合
SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...
- eclipse中SSH三大框架环境搭建<三>
相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...
- SSH三大框架合辑的搭建步骤
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Maven SSH三大框架整合的加载流程
<Maven精品教程视频\day02视频\03ssh配置文件加载过程.avi;> 此课程中讲 SSH三大框架整合的加载流程,还可以,初步接触的朋友可以听一听. < \day02视频\ ...
- ssh三大框架的认识
一.SSH三大框架的概述 ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层 ...
- SSH三大框架的知识题
Struts 谈谈你对Struts的理解. 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是Act ...
随机推荐
- JS - if(flag) if(!flag)
1, if(flag) 判断是否为 true 2, if(!flag) 判断是否为false
- 分享一个简单的C#的通用DbHelper类(支持数据连接池)
每次新项目的时候,都要从头去找一遍数据库工具类.这里分享一个简单实用的C#的通用DbHelper工具类,支持数据连接池. 连接池配置 <connectionStrings> <add ...
- WTM框架在开发过程中如何动态迁移表和创建表
官方迁移方法:https://wtmdoc.walkingtec.cn/#/Data/Migration 但是在实际开发过程中使用Add-Migration 方法迁移会发现,把系统内置的表也全部带出来 ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第五篇-Swagger增加权限认证
配置文件services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = " ...
- Bug 佛祖镇楼
原文链接:https://www.cnblogs.com/xdp-gacl/p/4198935.html // _ooOoo_ // o8888888o // 88" . "88 ...
- 140-PHP类的抽象方法和继承
<?php abstract class father{ //定义一个抽象类 abstract public function test(); //定义抽象方法 } class son exte ...
- LeetCode刷题(持续更新ing……)
准备刷题了!已经预见未来的日子是苦并快乐的了!虽然 N 年前刷过题,但现在感觉数据结构与算法的基本功快忘光了
- HDU - 4430 Yukari's Birthday(二分+枚举)
题意:已知有n个蜡烛,过生日在蛋糕上摆蜡烛,将蜡烛围成同心圆,每圈个数为ki,蛋糕中心最多可摆一个蜡烛,求圈数r和看,条件为r*k尽可能小的情况下,r尽可能小. 分析:n最大为1012,k最少为2,假 ...
- Python 自省指南
原作者:Patrick K. O'Brien 什么是自省? 在日常生活中,自省(introspection)是一种自我检查行为.自省是指对某人自身思想.情绪.动机和行为的检查.伟大的哲学家苏格拉底将生 ...
- oracle(5)--DQL查询语句
DQL 数据查询语句(data query language) 1.查询条件符号: < , > , = , <= , >= , != , < > ...