- 可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。
- 视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。
- 模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。
- 潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。
- 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
- 视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
- 视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
- 目前,一般高级的界面工具或构造器不支持此模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。
1> 客户端浏览器发出HTTP请求.
2> 根据web.xml配置,该请求被FilterDispatcher接收
3> 根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4> Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5> Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6> 返回HTTP响应到客户端浏览器
3. 工作原理
1> 客户端初始化一个指向Servlet容器的请求
2> 这个请求经过一系列的过滤器(Filter)
3> 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4> 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 > ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
6> ActionProxy创建一个ActionInvocation的实例。
7> ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8> 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
4. 为什么使用struts2?
1> 开源的mvc框架
2> 纯pojo的Action
3> 更好的标签特性
4> 易测试
5> 易扩展
- 在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO。
- 线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例。没有线程安全方面的问题。
- Servlet依赖方面:Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。
- 封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
- 表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph Notation Language)。
- 绑定值到视图技术:Struts1使用标准的JSP,Struts使用“ValueStack”技术。
- 类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
- 数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
- Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的声明周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的声明周期。
----------------------------------------------------------------Hibernate部分--------------------------------------------------
1> 读取并解析hibernate核心配置文件
2> 读取并解析映射信息
3> 创建SessionFactory
4> 打开Sesssion
5> 创建事务Transation
6> 持久化操作
7> 提交事务
8> 关闭Session
9> 关闭SesstionFactory
3. 为什么使用Hibernate?
Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
Hibernate是一个基于jdbc的主流持久化框架,是用优秀的orm实现,它很大程度的简化了dao层编码工作
4. Hibernate 能干什么?
- 实现OR之间的Mapping。
- 减少jdbc+sql的开发时间,提高开发效率。
- 能够屏蔽不同的数据库的实现,能够实现平滑的在不同数据库之间进行移植。
相关推荐
面试必备,学习java所必需的掌握,java工程师面试题之三大框架
Java 三大框架,包括Struts、Spring和Hibernate,是Java开发Web应用时常用的技术栈,它们各自承担着不同的职责,为开发者提供了强大的支持。以下是对这些框架的详细解释: 1. **Hibernate**: - **工作原理**:...
Java面试中一些常问到的关于三大框架的问题,希望对大家有所帮助。
java java面试 ssh 三大框架 java面试三大框架,有此必过
Java 面试题、Java 框架面试题 Java 面试题是 Java 开发人员面试的必备知识,涵盖了 Java 基础知识、Java 框架、Java 集合框架、Java 多线程、Java 网络编程等方面的知识点。在本文中,我们将对 Java 面试题进行...
Java常见面试题及三大框架面试题目解析 Java 基础知识点: 1. 作用域 public,private,protected,以及不写时的区别: 作用域的区别在于访问权限的限制,public为公共访问权限,private为私有访问权限,protected为...
绝对是个好东西,涵盖了从java基础到三大框架所以涉及到的知识,java体系很大,不光为了面试,还可以拿来学习
框架的面试题 springmvc mybatis hibernate struts2。 框架的面试题 springmvc mybatis hibernate struts2。 框架的面试题 springmvc mybatis hibernate struts2
│ Java面试题67:数据库优化之数据库表设计遵循范式.mp4 │ Java面试题68:选择合适的数据库引擎.mp4 │ Java面试题69:选择合适的索引.mp4 │ Java面试题70:使用索引的一些技巧.mp4 │ Java面试题71:数据库优化...
【JAVA三大框架有关面试复习题目】的讨论涵盖了Struts框架的运行流程以及连接池的概念。Struts是一个基于Model-View-Controller(MVC)模式的Java Web开发框架,它的核心在于控制层,即ActionServlet。以下是对...
Hibernate是一个流行的Java持久层框架,它遵循ORM(对象关系映射)的设计模式。...总之,Struts、Spring和Hibernate是Java开发中常用的三大框架,各自有着独特的功能和优势,共同构建起Java Web开发的强大工具集。
Java三大框架指的是Spring、Struts和Hibernate,它们是Java企业级应用开发中广泛使用的开源框架,极大地提高了开发效率和代码质量。在这个“java三大框架示例”中,我们可以期待找到这三个框架的配置教程和实际应用...
Java工程师面试题之三大框架
Java面试虚拟机篇+框架篇,这是我总结出来的Java面试中虚拟机和框架方面的面试题,非常全面,希望大家喜欢
本人就是通过自学java,然后找到工作,有很多这样的人,并不难,关键在于你学习方向,学习曲线问题,只要都正确,效率会很高。如果也有想自学java的可以在我博客留言或者加我博客,一起交流 我的博客:...
Java面试宝典是Java程序员求职面试的重要参考资料,它涵盖了Java编程语言的核心概念、高级特性、设计模式、并发处理、框架应用、数据库交互等多个方面。以下将详细解析这些关键知识点: 1. **Java基础**:面试中,...
Java工程师三大框架面试题 Java工程师三大框架面试题是Java开发领域的重要知识点,本文将从Hibernate、Struts、Spring三个方面对Java工程师常见的面试题进行解释和分析。 Hibernate 1. Hibernate提供了属性的延迟...
史上最全的android和java面试文档集。包括有: java程序员面试宝典.txt Java面试宝典2011版-1C,Java基础部分.doc 三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf ...
《Java面试宝典2018版》是针对Java开发者准备面试的重要参考资料,它涵盖了Java编程语言、Java虚拟机(JVM)、并发编程、框架、设计模式等多个关键领域的重要知识点。这本书旨在帮助Java程序员深入理解技术原理,...