五大框架(springMVC,struts2,spring,mybatis,hibernate)

说说你对springMVC框架的理解?

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

Springmvc就是spring框架的一个模块,它是一个基于mvc设计思想的前端web层框架,主要作用就是对前端请求进行处理。
完整答案

Springmvc就是spring框架的一个模块,所以它可以和spring框架可以进行无缝整合,它是一个基于mvc设计思想的前端web框架,主要作用就是对前端请求进行处理。他的前端控制器是一个servlet.它的请求拦截是基于方法级别的.他的执行流程是
Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成
1. 客户端请求提交到DispatcherServlet
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端
备注:

mvc指的就是Model(业务模型)、View(视图)、Controller(控制器)

说说你对struts2框架的理解?

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

Struts2,它是一个基于mvc设计思想的前端web层框架,主要作用就是对前端请求进行处理。他的核心是拦截器.但是他的前端控制器是一个过滤器
完整答案

Struts2,它是一个基于mvc设计思想的前端web层框架,主要作用就是对前端请求进行处理。他的核心是拦截器.但是他的前端控制器是一个过滤器. 它的请求拦截是基于类级别,OGNL也提供了在Struts2里访问各种作用域中的数据的简单方式.大大简化了获取数据的代码.struts2的执行流程是:
A. 页面请求传递到后台, 首先进入Struts2 的核心过滤器 StrutsPrepareAndExecutedFilter .
B. 请求进入到struts2 之后, 会根据请求的路径到 struts.xml 文件中根据 package的 namespace 属性 与 action 的 name 属性配置到请求处理的Action 类.
C. 匹配到对应 Action 类的对应方法 , 执行该方法进行业务处理, 处理完毕之后会返回一个结果视图(字符串).
D. 然后根据返回的结果视图 , 到struts.xml 中对应的Action的result结果集配置中 匹配 对应的视图页面(或action).
E. 然后根据 result 的type属性, 转发(或重定向) 对应的页面(或action).
 
 
SpringMVC和Struts2两个框架对比一下.

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

注意:两个技术已经很多年了,技术非常成熟.用户群体很大.不能片面的用好与不好来说.只能说适合不适合.因为每个东西都有擅长和不擅长

注意:说出几点即可
1、springmvc入口是一个servlet前端控制器,struts2入口是一个filter过虑器。
2、struts2通过在action类中定义成员变量接收请求参数,struts2只能使用多例模式管理action。
springmvc通过在controller方法中定义形参接收请求参数,springmvc可以使用单例模式管理controller。
3、springmvc是基于方法开发的,注解开发中使用requestMapping将url和方法进行映射,如果根据url找到controller类的方法生成一个Handler处理器对象(只包括一个method)。
struts2是基于类开发,每个请求过来创建一个action实例,实例对象中有若干的方法。
开发中建议使用springmvc,springmvc方法更类似service业务方法。
4、Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数绑定器是将request请求内容解析,并给方法形参赋值。

说说你对spring框架的理解?他的作用是什么?

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

Spring的核心有很多.其中比较主要也是我们常用的就是AOP,IOC,DI.也就是面向切面编程,控制反转,依赖注入.Spring一般是作为容器管理其他框架.例如常见的web层框架(struts2,springMVC)和持久成框架(mybatis,hibernate).一般都由spring来管理
完整答案

(1)aop:面向切面编程,将跟业务逻辑没有关系的代码提取出来,在调用目标方法之前或者之后执行。常用的场景,事务,日志,权限控制,异常处理等方面。
    (2)ioc:创建对象的权利,交给spring容器创建。
    (3)di:如果一个对象A需要使用另一个对象B才能实现某个功能,这时就可以说A对象依赖于B对象,而Spring容器在创建A对象时,会自动将A对象需要的B对象注入到A对象中,此过程就是依赖注入。
 
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
    Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
    Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
    Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
    Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
    Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
    Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

说说你对mybatis框架的理解

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

Mybatis是一个优秀的ORM框架.应用在持久层. 它对jdbc的 操作数据库过程 进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、等jdbc繁杂的过程代码.一般使用mapper代理的方式开发.直接在xml里面写sql(如果对hibernate了解.可以话题转向mybatis和hibernate的对比)
完整答案

Mybatis的工作流程
 
1、  mybatis配置
SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2、  通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
3、  由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession(DefaultSqlSession)进行。
4、  mybatis底层自定义了Executor(BaseExecutor)执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
5、  Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
6、  Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
7、  Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

说说你对hibernate框架的理解

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

Hibernate是轻量级的持久层解决方案,是一个关系数据库ORM框架, 对JDBC访问数据库的代码做了封装.我们可以很容易的对数据库进行增删改查操作.
完整答案

hibernate查询方式?
    (1)导航对象图检索方式。根据已经加载的对象,导航到其他对象。
    (2)OID检索方式。使用get或者load加载对应的对象
    (3)HQL检索方式。
    (4)QBC检索方式。
    (5)SQL检索方式。
sql与hql的区别?
    (1)sql是直接操作数据库的
    (2)hql是通过操作对象操作数据库,对大小写敏感。
一级缓存和二级缓存的区别?
    (1)一级缓存是session级别的缓存,二级缓存是sessionFactory级别的缓存。
hibernate中get和load的区别?
    get和load都是根据id获取数据。
    (1)get先查询session中对应id是否有数据,如果有则直接返回,有查询数据库,如数据库中没有则返回为null;
    (2)load方式查询session中对应id是否有数据,如果没有生成代理对象,查询数据库。如没有对应的id则抛出异常

Hibernate和mybatis对比

简要口述(如果感觉说的少可以在完整答案里面挑几条说)

注意:两个技术已经很多年了,技术非常成熟.用户群体很大.不能片面的用好与不好来说.只能说适合不适合.因为每个东西都有擅长和不擅长

1. 在移植性方面hibernate配置一下方言即可.而一般情况下mybatis则需要修改sql语句
2. hibernate是一个完全的ORM框架.完全的面向对象.更符合我们开发者的思维模式.mybatis需要我们手动写sql语句
3. hibernate的优化成本比较高.因为hibernate的sql语句是自动生成的,所以在优化方面一般的新手无从下手.而mybatis只要修改sql就可以了.更加容易上手
(如果对某一个框架非常了解.这里话锋可以转向具体的详细介绍某一个框架)
---------------------
作者:yspxiaopanni
来源:CSDN
原文:https://blog.csdn.net/yspxiaopanni/article/details/79410822
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. SHOI2016游记&滚粗记&酱油记
  2. Description Resource Path Location Type Java compiler level does not match the version of the instal
  3. mongoDB3.0 索引 整理
  4. 带领大家安装Rational rose
  5. 设置jdk的编码
  6. 每日Scrum(7)
  7. Ruby界面开发--wxRuby库TextCtrl相关问题
  8. 终于!Linaro 加盟 Zephyr 项目
  9. codevs 1704 卡片游戏
  10. C++ 预编译头文件
  11. OA学习笔记-001-项目介绍
  12. select 中使用 case when 和 replace
  13. (转)Java 的swing.GroupLayout布局管理器的使用方法和实例
  14. WM_PAINT在微软官方定义中,wParam和lParam都没有使用,所以就被Delphi给重定义了这个消息,还增加了DC(Delphi可任意改写消息的结构)
  15. git与github的使用
  16. 使用 Palette 让你的 UI 色彩与内容更贴合
  17. Git使用简单总结
  18. LeetCode题目总结(三)
  19. 分享波面经【2年经验】【linux c++】
  20. 【电子书分享】Learning PySpark下载,包含pdf、epub格式

热门文章

  1. k8s小工具
  2. spring boot整合JMS(ActiveMQ实现)
  3. [LeetCode解题报告] 703. 数据流中的第K大元素
  4. openssl genrsa
  5. 自动化运维(2)之一键式单实例安装MySQL
  6. Gradle学习笔记(1)创建简单的Java项目
  7. RPA流程自动化-Blueprism认证考试介绍
  8. C#特性之数据类型
  9. linux学习笔记-解决google-chrome打开后弹出输入密码以解锁您的登录密钥环的提示
  10. C++解析 xml,用到pugixml库