转:http://www.cnblogs.com/System-out-println/p/5974113.html

Struts2框架

一、简介

Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的WebWork和XWork框架,继承其优点,同时做了相当的改进。

1、Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。

2、使用OGNL进行参数传递。OGNL提供了在Struts2里访问各种作用域的数据的简单方式,你可以方便的获取Request、Attribute、Application、Session、Parameters中的数据。大大简化了开发人员在获取这些数据是的代码量。

3、强大的拦截器。Struts2的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理、文件上传、验证等。 拦截器是可配置与重用的,可以将一些通用的功能如:登录验证、权限验证等置于拦截器中以完成了系统中的权限验证功能。

4、易于测试。Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了Java Web项目的测试。

5、易于扩展的插件机制。在Struts2添加扩展是一件愉快而轻松的事情,只需要将所需要的Jar包放到WEB-INF/lib文件中,在Struts.xml中做一些简单的设置就可以实现扩展。

6、模块化管理。Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序模块化:将配置信息拆分成多个文件把自包含的应用模块创建为插件创建的框架特性,即将于特定应用无关的新功能组织成插件,以添加到多个应用中去。

7、全局结果与声明式异常。为应用程序添加全局的Result,和在配置文件中对异常进行处理,这样当处理过程中出现指定异常时,可以跳转到特定页面。

二、Struts2的工作机制

在Struts2框架中的处理大概分为:

1、客户端初始化一个指向Servlet容器(如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮组,例如:SiteMeshPlugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProcy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation实例。

7、ActionInvocation实例使用命令模式来调用,在调用Action的过程前后,

涉及到相关拦截器(Interceptor)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据Struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模板。在表示过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

Spring框架讲解

一、简介

Spring为企业应用的开发提供了一个轻量级的解决方案,包括基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合,以及优秀的Web MVC框架等。Spring支持对POJO(Plain Object Java Object,指最传统的Java对象,和任何模式都无关)的管理。Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以代替。

Spring是一个开源的项目;它基于IOC和AOP的架构多层J2ee系统的框架,

但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transaction Manager等等。

优点:

1、Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。

2、Spring能消除在许多工程中常见的对Singleton的过多使用;降低了系统的可测试性和面向对象的程度。

3、通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。

4、通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。

5、Spring被设计为让使用者它创建的应用尽可能少的依赖于他的API。

6、使用Spring构建的应用程序易于单元测试。

7、Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。

8、Spring帮助你解决许多问题而无需使用EJB。

9、Spring为数据存取提供了一个一致的框架,不论使用的是JDBC还是O/R Mapping产品(如Hibernate)。

缺点:

Jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器。

二、Spring的工作机制

1、用户向服务器发送请求,请求被Spring前端控制DispatcherServlet捕获;

2.、DispatcherServlet对请求URL进行解析,得到请求资源标示符(URI)。然后根据该URI,调用Handler Mapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

3、DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。(如果成功获得后,此时将开始执行拦截器的preHandler(…)方法)。

4、提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮助你做一些额外的工作(如:HttpMessageConveter、数据装换、数据格式化、数据验证),验证结果存储到BindingResult或Error中。

5、Handler执行完成后,向DispatcherServlet返回一个ModelAndView对对象;

6、根据返回的ModelAndView,选择一个合适的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet;

7、ViewResolver结合Model和View,来渲染试图。

8、将渲染结果返回给客户端。

注解:

1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.

3.DispatcherServlet将请求提交到目标Controller

4.Controller进行业务逻辑处理后,会返回一个ModelAndView

5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

6.视图对象负责渲染返回给客户端。

Hibernate框架讲解

一、简介

Hibernate是开源的、用于封装数据访问层的组件,我们称之为数据访问层框架(或持久层框架)。

之前我们通过JDBC/SQL语句从数据库中访问/操作数据,而Hibernate就是封装了这些操作,用于数据访问层的组件技术。

出现Hibernate框架之前在企业项目开发过程中,如下几点造成了程序员们的痛苦:

1、SQL语句过于繁杂和数据库的耦合度高。

2、指有些SQL会涉及到多表操作,或者有些表会非常庞大,这时候写在Dao中的SQL就会非常复杂,同时导致Dao和数据库的耦合度较高。

3、不同数据库之间SQL的不同,导致移植困难。

4、不同数据库虽然SQL语句大致相同,但是还有一些细节上的差别,比如Oracle中的分页方式和MySQL中的分页是不同的,所以会有代码移植困难的因素。

5、二维关系表和对象之间数据结构的不匹配。

6、我们从数据库中取出的数据时结果集(一张表),而我们开发时需要将查询到的结果集封装为对象,然而数据库中二维表的数据结构和内存中Java对象的数据结构是不匹配的(表中的数据需要经过处理才能变为Java对象)。

基于如上几点,痛苦促进了技术的革新和进步,Hibernate应用而生。

二、Hibernate的工作原理-ORM

对象-关系映射(Object-Relationship Mapping)

在我们的应用程序(App)中数据用对象类体现,而在数据库中,数据使用表的形式保存。

Hibernate用于应用程序中的对象(Object)与表中的数据关系(Relationship)之间的映射(Mapping),即把对象保存到关系表中或者把关系表中数据取出映射为对象。

可以这样理解,当我们使用Hibernate框架技术,就可以直接从数据库中取出Java对象,或者把Java对象直接保存于数据库中,中间写SQL语句等繁琐的步骤被Hibernate封装,对我们是透明的。

Hibernate是自动化程度很高的组件,因此比较难以驾驭,在对Hibernate理解不够透彻的情况下使用,稍不留神可能就会影响性能。

业界还有一些自动化程序度稍低的数据访问层组件,比如Ibatis,相当于半自动化的仪器,可控性较Hibernate强一些,目前也比较流行。

处理步骤:

1、通过Configuration().configure(); //读取并解析hibernate.cfg.xml配置文件

2、由hibernate.cfg.xml中的<mapping resource=”**/**/User.hbm.xml”>读取并解析映射信息.

3、通过config.buildSessionFactory(); //创建SessionFactory;

4、sessionFactory.openSession(); //打开Session

5、session.beginTransaction(); //创建事务Transaction

6、persistent operate 持久化操作.

7、Session.getTransaction().commit(); //提交事务

8、关闭Session

9、关闭SessionFactory

转载于:https://www.cnblogs.com/xujingyang/p/7137227.html

Struts 2 Spring Hibernate三大框架的执行流程以及原理相关推荐

  1. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  2. Struts2+Spring+Hibernate 三大框架的合并集成

    这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样. 首先看一下 ...

  3. SSM三大框架的运行流程、原理、核心技术详解!

    一.Spring部分 1.Spring的运行流程 第一步:加载配置文件ApplicationContext ac = new ClassPathXmlApplicationContext(" ...

  4. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

    hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提 ...

  5. 追源索骥:透过源码看懂Flink核心框架的执行流程

    https://www.cnblogs.com/bethunebtj/p/9168274.html 追源索骥:透过源码看懂Flink核心框架的执行流程 前言 1.从 Hello,World WordC ...

  6. 追源索骥:透过源码看懂Flink核心框架的执行流程--来自GitHub

    追源索骥:透过源码看懂Flink核心框架的执行流程 联系qq2499496272可进行删除,需要文件版本的私聊!!~ 文章目录 追源索骥:透过源码看懂Flink核心框架的执行流程 前言 1.从 ~~H ...

  7. Spring MVC开发步骤以及执行流程

    Spring MVC开发步骤以及执行流程 开发步骤 1.在web.xml中定义前端控制器DispatcherServlet来拦截用户请求. 2.如果要以post方式提交请求,则定义包含表单数据的jsp ...

  8. Spring Security 案例实现和执行流程剖析

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin Spring Security Spring Security 是 Sprin ...

  9. Spring Security 案例实现和执行流程剖析(转)

    本位转自 作者:朝雨忆轻尘 出处:https://www.cnblogs.com/xifengxiaoma/ 文章写的非常好,受益匪浅. Spring Security Spring Security ...

最新文章

  1. 基于TPS28225功率MOS半桥电路测试
  2. 物联网将计算机以外的设备,物联网以各种形式展现在我们眼前,这是一个商业模式不是一项技术...
  3. AXI quad SPI没有输出
  4. VTK:可视化之StructuredDataTypes
  5. 【Lucene4.8教程之三】搜索
  6. [转] java.nio.ByteBuffer中flip、rewind、clear方法的区别
  7. 在ASP.NET Core使用Middleware模拟Custom Error Page功能
  8. 《飞鸽传书2007怎么用》这种即时通讯技术已开始普及
  9. 春招快到了,送你一份数据分析常见面试题
  10. hive udaf_Hive UDAF 函数的编写
  11. ES6知识整理(2)--变量的解构赋值
  12. 4.在屏幕上输出以下图案: * *** ***** ******* ********* *********** ************* *********** *********
  13. chrome 开发工具插件总结
  14. TM1640显示屏驱动IC驱动6位数码管实例
  15. 01惯性导航常用坐标系与地球参考椭球
  16. Baidu Expressive TTS《Multi-reference Tacotron by Intercross Training for Style Disentangling...》
  17. idea工具推荐几款好用的代码theme主题颜色
  18. 为OneFlow添加新的前端语言
  19. 从GraalVM到Quarkus系列-B002篇-Quarkus中的字节码框架gizmo
  20. JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写

热门文章

  1. (转)Android中JNI编程的那些事儿
  2. java基础—IO流——将一些字符写入到指定硬盘上的目录中去:
  3. Mr.J-- HTTP学习笔记(八)-- 网关
  4. Django--工程搭建
  5. nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)
  6. asp.net的处理机制(.ashx/.aspx)
  7. 一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)
  8. burp 代理的时候无法访问https网站
  9. [转] ASP.NET中使用javascript
  10. 用css3制作一个Music Player Menu