java面试题(三)spring部分

1、简单说下spring的工作流程?

用户向服务器发出请求,请求被spring前端控制器 DispatcherServlet 捕获。

DispatcherServlet对请求url进行解析,调用HandleMapping获得该Handle配置的所有相关对象。

DispatcherServlet根据获得的Handle,选择一个合适的HandleAdapter

提前Request中的模型数据填充Handle入参,开始执行Handle(controller)

Handler执行完毕后向DispatcherServlet返回一个ModelAndView对象

根据返回的ModelAndView选择一个合适的ViewResolver返回给DispatcherServlet

ViewResolver根据Model和View来渲染视图

 将渲染结果返回给客户端

2、简单说一下mybatis和hibernate的区别?

都是orm数据库框架,mybatis是半自动的,hibernate是全自动的;

hibernate数据库移植性远大于mybatis;

hibernate具有完整的日志系统,mybatis则欠缺一些 ;

mybatis相比hibernate关注更多的细节;

sql直接优化上,mybatis要比hibernate方便很多;

3、解释一下IOC(IOC控制反转,也可称依赖倒置。)?

首先,先用文本语言讲一下,然后再用白话文解释;

所谓依赖,就是如果A要调用B的方法,则A依赖于B,因为A用到了B则A依赖B,如果不倒置的话,因为A必须要有B

才能调用B,就是如果不倒置那么A必须主动去获取B的实例  B  b = new B();这是不倒置,倒置的话就是不用主动去

获取B,而是其它人自动将B送上门来;

通俗点用白话文举例就是:假如你要去超市买水,那么你要到小卖部去,告诉他们你要水,他们给你水,这本没太大问题;

但是,如果超市很远,你要考虑怎么去超市,超市有没有水,是否需要开车去等等因素,结果买一瓶水还要依赖车子或者

还有其他的很多工具,问题就变的很复杂了;怎么解决呢?

解决方法也很简单:超市提供送货上门的服务,凡是超市的会员都可以享受送货上门的服务;;

这样你就只需要考虑两件事:注册超市会员;告诉超市你需要水,这样就方便很多;

4、解释一下AOP 面向切面?

面向切面编程的目标就是分离关注点,什么为关注点,你要做的事,这就是关注点。假如你是一个富二代,

每天衣来伸手饭来张口,整天只想着玩就行了,每天睁开眼就只想着吃完饭赶快去玩(这是必须做的事),

但是在玩之前,你需要穿衣服,叠被子,刷牙洗脸,做饭吃饭等等事情,这都是你的关注点,但是你只想

吃饭然后玩,那怎么办呢?于是你把这些事情都交给别人去干,管家A给你穿衣服叠被子,管家B给你刷牙洗脸,

管家C给你做饭,然后你吃饭然后去玩,这就是你一天的正事,等你回来之后又有一系列的管家帮你做事,

这样一天就过去了。

AOP的好处就是你只关系你的正事就行,其他的别人给你做,比如某一天你不想刷牙洗脸了,把管家B解雇就行了,

有天你想带钱出去玩,再找一个管家D帮你拿钱,这就是AOP,大家各司其职,灵活组合,达到一种可配置,可插拔的

程序结构。

从Spring的角度看,AOP的最大好处就是提供了事务管理的能力,事务管理就是一个关注点,你的正事就是访问数据库,

而你不想管事务,所以,在你访问数据库之前,自动帮你开启事务,访问结束后自动帮你提交/回滚事务;

5、cookie和session的区别?

区别:

cookie数据放在浏览器上,session数据放在服务器上;

cookie不是很安全,别人可以分析存放在本地的cookie,考虑到安全应该用session;

session会在一定时间内保存在服务器上,当访问增多,会占用服务器性能,考虑减轻服务器性能方面,应使用cookie

单个cookie存放数据不能超过4k,很多浏览器都限制一个站点最多存放20个cookie; 

联系:session是通过cookie工作的;

6、jsp和servlet的区别?

简单的说jsp和servlet主要有两方面的不同:

编译:jsp修改后可以立马看到效果,不需要编译。而servlet需要编译

转换:jsp是动态网页开发技术,是运行在服务器的脚本语言。而servlet是web服务器端编程技术。

所以jsp运行时就是转换成servlet,也就是java程序来执行

猜你喜欢

转载自blog.csdn.net/zks_4826/article/details/79217577
今日推荐