`
shibin_1109
  • 浏览: 79400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java面试三大框架

    博客分类:
  • java
阅读更多
----------------------------------------------------------------MVC部分-------------------------------------------------------
1. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻     辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

2. MVC的优点
可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。
视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。
模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。
潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。
3. MVC的不足之处
增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
目前,一般高级的界面工具或构造器不支持此模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。
----------------------------------------------------------------Struts2部分-----------------------------------------------------
1. Struts 2是基于mvc的web框架,是在 WebWork的技术基础上开发的全新MVC框架。

2. 工作流程
  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> 易扩展

5. 比较struts1和struts2的不同
在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是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

2. 工作原理
1>  通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
2>  由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息
3>  通过config.buildSessionFactory();//创建SessionFactory
4>  sessionFactory.openSession();//打开Sesssion
5>  session.beginTransaction();//创建事务Transation
6>  persistent operate持久化操作
7>  session.getTransaction().commit();//提交事务
8>  关闭Session
9>  关闭SesstionFactory

3. 为什么使用Hibernate?

Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码

Hibernate是一个基于jdbc的主流持久化框架,是用优秀的orm实现,它很大程度的简化了dao层编码工作

4. Hibernate 能干什么?

实现OR之间的Mapping。
减少jdbc+sql的开发时间,提高开发效率。
能够屏蔽不同的数据库的实现,能够实现平滑的在不同数据库之间进行移植。

------------------------------------------------------Spring部分--------------------------------------------
1. Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。

2. 控制反转——Spring通过一种称作控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
 
3. 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务和事务进行内聚性的开发。

4.为什么使用Spring?
1> 方便解耦,简化开发
2> 方便程序的测试
3> 方便集成各种优秀框架
分享到:
评论

相关推荐

    java面试三大框架,有此必过

    java java面试 ssh 三大框架 java面试三大框架,有此必过

    java面试大全从基础到web到ssh三大框架

    本人就是通过自学java,然后找到工作,有很多这样的人,并不难,关键在于你学习方向,学习曲线问题,只要都正确,效率会很高。如果也有想自学java的可以在我博客留言或者加我博客,一起交流 我的博客:...

    java 三大框架面试题

    Java 三大框架,包括Struts、Spring和Hibernate,是Java开发Web应用时常用的技术栈,它们各自承担着不同的职责,为开发者提供了强大的支持。以下是对这些框架的详细解释: 1. **Hibernate**: - **工作原理**:...

    Java工程师面试题(三大框架)

    Java面试中一些常问到的关于三大框架的问题,希望对大家有所帮助。

    java面试题-框架

    框架的面试题 springmvc mybatis hibernate struts2。 框架的面试题 springmvc mybatis hibernate struts2。 框架的面试题 springmvc mybatis hibernate struts2

    Java工程师面试题之三大框架

    面试必备,学习java所必需的掌握,java工程师面试题之三大框架

    java常见面试题及三大框架面试

    Java常见面试题及三大框架面试题目解析 Java 基础知识点: 1. 作用域 public,private,protected,以及不写时的区别: 作用域的区别在于访问权限的限制,public为公共访问权限,private为私有访问权限,protected为...

    Java工程师三大框架面试题.doc

    Java工程师三大框架面试题 Java工程师三大框架面试题是Java开发领域的重要知识点,本文将从Hibernate、Struts、Spring三个方面对Java工程师常见的面试题进行解释和分析。 Hibernate 1. Hibernate提供了属性的延迟...

    java面试题,java框架面试题

    Java 面试题、Java 框架面试题 Java 面试题是 Java 开发人员面试的必备知识,涵盖了 Java 基础知识、Java 框架、Java 集合框架、Java 多线程、Java 网络编程等方面的知识点。在本文中,我们将对 Java 面试题进行...

    JAVA三大框架有关面试复习题目

    【JAVA三大框架有关面试复习题目】的讨论涵盖了Struts框架的运行流程以及连接池的概念。Struts是一个基于Model-View-Controller(MVC)模式的Java Web开发框架,它的核心在于控制层,即ActionServlet。以下是对...

    java三大框架示例

    Java三大框架指的是Spring、Struts和Hibernate,它们是Java企业级应用开发中广泛使用的开源框架,极大地提高了开发效率和代码质量。在这个“java三大框架示例”中,我们可以期待找到这三个框架的配置教程和实际应用...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    Java工程师三大框架面试题.pdf

    Java工程师三大框架面试题.pdf

    java 面试 java基础到三大框架

    绝对是个好东西,涵盖了从java基础到三大框架所以涉及到的知识,java体系很大,不光为了面试,还可以拿来学习

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    Java面试宝典是Java程序员求职面试的重要参考资料,它涵盖了Java编程语言的核心概念、...以上这些知识点构成了Java面试的主要内容,熟练掌握并能灵活应用,将极大地提升你在面试中的竞争力,助你在求职路上一马当先。

    java 三大框架面试题(SSH)

    Java 三大框架,即Struts、Hibernate和Spring,是Java Web开发中常用的技术组合,用于构建高效、可维护的企业级应用程序。这些框架各有其特点,共同构建了一个强大的MVC(Model-View-Controller)架构。 Struts是...

    android和java面试大全集

    三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf Java面试宝典_2010.doc 面试全攻略100题.doc 智力题和答案.doc C语言面试题大汇总.doc 计算机专业必备笔试面试锦囊...

    java面试宝典2018版

    《Java面试宝典2018版》是针对Java开发者准备面试的重要参考资料,它涵盖了Java编程语言、Java虚拟机(JVM)、并发编程、框架、设计模式等多个关键领域的重要知识点。这本书旨在帮助Java程序员深入理解技术原理,...

    Java面试题2022

    在准备2022年的Java面试时,了解和掌握关键知识点是至关重要的。Java作为一款广泛应用的后端开发语言,其面试通常会涵盖基础语法、面向对象编程、集合框架、多线程、JVM内存管理、数据库交互以及开源框架等方面。...

Global site tag (gtag.js) - Google Analytics