面试题4 框架知识

来源:互联网 发布:windows udp 编辑:程序博客网 时间:2024/06/07 02:29

一、spring

1.1  介绍一下Spring***

Spring是一个轻量级的IOC和AOP容器框架,提供对持久层和物的支持。

同时它也是一个全方位的应用程序框架,能够很好的和各种框架进行整合。

(比如struts,Hibernate,mybatis)

备注:

a,轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;

 b,IOC(Inversion of Control 控制反转):对象创建责任的反转(重点,核心)

把自己new的东西改为由容器提供

c, 面向横切面(AOP)编程

 

1.2、为何使用Spring **

Spring,使系统中用到的其它框架耦合程度大大降低,拓展性强、简单易用好管理

1.3、spring在项目中如何充当粘合剂**

1、在项目中利用spring的IOC(控制反转或依赖注入),明确地定义组件接口(如UserDAO),然后我们可以独立开发各个组件,然后根据组件间的依赖关系组装(UserAction依赖于UserService,UserService依赖于UserDAO)运行;

(2)很好的把Struts(Action)和hibernate(DAO的实现)结合起来;

2、spring的事务管理把hibernate对数据库的操作进行了事务配置


1.4、spring工作原理 **

Spring的核心就在于他的IOC(控制反转)和AOP(面向切面编程),

IOC,让一个对象的创建不用new了,交给容器去管理,可以自动的生产。

AOP也就是可以在调用的方法前后可以附加另外的行为


 

(1)       请解释下Spring框架中的IoC?***

(1)       IOC ,Inversion of Control,就是“控制反转”,它是一中设计思想

(2)       在spring中IOC就是把对象的初始化,销毁,等工作交给spring容器来做。由spring容器来控制对象的生命周期。

(1)       BeanFactory 是Spring IoC容器的具体实现,用来包装和管理各种bean。

 


1.6  Spring 框架中都用到了哪些设计模式?**

代理模式—AOP

单例模式—在spring配置文件中定义的bean默认为单例模式。

工厂模式—BeanFactory用来创建对象的实例。


二、springmvc

2.1  什么是spring mvc?**

 springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

springmvc是一个基于mvc的web框架。

2.2 、spring mvc的原理***

第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找 Handler

         可以根据xml配置、注解进行查找

 

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

         ModelAndView是springmvc框架的一个底层对象,包括Model和view

第八步:前端控制器请求视图解析器去进行视图解析

         根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染

         将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果



2.3  springmvc 的异常处理

1.  springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

2.. 系统遇到异常,在程序中手动抛出,dao抛给service、service给controller、controller抛给前端控制器,前端控制器调用全局异常处理器。

3. springmvc提供一个HandlerExceptionResolver接口,实现这个接口,最后配置

4. springmvc.xml配置全局异常处理器


三、mybatis

mybatis是什么?

1、mybatis是一个持久层的框架,它让我们可以把主要精力放在sql上。通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要的sql语句。

2、mybatis 很方便的将查询结果集灵活映射成java对象。(输出映射


3.2 、#{}和${}的区别

1.  他们都可以接收参数,类型可以是简单类型,pojo、hashmap。

2.      #{}表示一个占位符号,${}表示一个拼接符号,会引起sql注入

      #{} 为什么可以避免sql注入

       #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111",

3.      如果接收简单类型,#{}中可以写成value或其它名称。${}中只能写成value。





原创粉丝点击