面试复习资料(一)——SSM

SSM框架即Spring、SpringMVC、Mybatis

Spring

1.Spring在SSM中的作用
spring是将业务(控制)、表现、持久(dao)层加以整合的一个容器。用来管理Bean的生命周期的框架集成。其核心为控制反转、依赖注入和切面开发即IOC、DI和AOP。控制反转是将dao层依赖注入到service层,service层在将其反转到controller层(控制层)。Spring*容器为BeanFactory,我们常用的ApplicationContext为它的子接口来实现工厂模式,而AOP则为我们提供了切面级开发。

2.什么是依赖注入和控制反转
控制反转是将我们过去为对象中主动控制去直接获取以来对象,采取将设计好的Bean交给容器控制获取外部资源(如对象和文件)和创建及依赖注入对象。

3.Spring的事物和作用
编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。

4.Spring的配置文件有哪些内容
开启配置扫描包、注解
开启事物注解驱动
开启事务管理其
开启通知
开启AOP
配置DB
加载配置文件。

5.Spring几种依赖注入方式
(1)构造器注入:通过构造方法初始化(XML)
<constructor-arg name=“dao”
(2)setter注入:通过get、set方式注入(常用)
<.property name=“dao” ref=“dao2”>



SpringMVC

1.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
是单例模式,spring推荐使用单例模式是因为大大节省了实例的创建和销毁,有利于提高性能。而在多线程模式下单例模式线程不再安全,则可以使用ThreadLocal(副本变量)来保证线程安全。

2.SpingMvc中的控制器的注解
@Controller 注解:该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API。

[email protected]注解用在类上面有什么作用
用来映射一个url到一个类或者一个方法上。

4.我想在拦截的方法里面得到从前台传入的参数,怎么得到
直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样

5.如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象
直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。

6.SpringMvc中函数的返回值是什么
返回值可以有很多类型,有String, ModelAndView,List,Set、Map等,一般用String比较好,如果是AJAX请求,返回的可以是一个集合。

7.SpringMVC怎么样设定重定向和转发的
重定向redirec:在返回值前面添加就可以,①发送②信息后由②返回①后再由①发送请求至③再由③返回①结果。
转发forward:在返回值前面添加就可以,①发送②信息后由②发送请求至③后再由③返回②结果然后②在返回结果至①。

8.怎么样把数据放入Session里面
可以声明一个request,或者session先拿到session,然后就可以放入数据,或者可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。

9.SpringMvc的执行流程
面试复习资料(一)——SSM
(1)用户发送请求之*控制器
(2)*控制器调用处理器映射器
(3)处理器映射器声称处理器对象及拦截器返回给*控制器
(4)*控制器调用处理器适配器
(5)处理器适配器调用具体处理器
(6)后端控制器返回处理结果
(7)处理器适配器将结果返回给*控制器
(8)*控制器将结果发送给试图解析器
(9)试图解析器解析结果并返回具体视图给*控制器
(10)*控制器对视图进行渲染
(11)*控制器将渲染后的视图返回给用户



Mybatis

1.什么是MyBatis的接口绑定,有什么好处
接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置。

2.什么情况下用注解绑定,什么情况下用xml绑定
当Sql语句比较简单时候,用注解绑定,当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多。

3.如果要查询的表名和返回的实体Bean对象不一致,那你是怎么处理的
在MyBatis里面最主要最灵活的的一个映射对象的ResultMap,在它里面可以映射键值对, 默认里面有id节点,result节点,它可以映射表里面的列名和对象里面的字段名. 并且在一对一,一对多的情况下结果集也一定要用ResultMap。

4.MyBatis的缓存
MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,
默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置。

5.MyBatis的好处是什么
Mybatis把sql语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便利。Mybatis封装了底层JDBC API的调用细节,并能自动将结果集转换成JavaBean对象,大大简化了Java数据库编程的重复工作。因为Mybatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句,因此能够实现比hibernate等全自动orm框架更高的查询效率,能够完成复杂查询。