Spring MVC相关内容整理(面试福利哦)

最近有同事问了我很多关于spring mvc的问题,大抵都是用于面试的,平时没人关注这些的,有些问题把我问的也是一愣一愣的,今天有空顺便就整理了下涉及到spring的相关资料问题,不管简单或者无聊,算是给你们的福利吧。

一、第一个当然是关于spirng mvc的请求解析流程了,说实话,这个需要回答的内容确实有点多,但只要说出几个关键词,差不多也OK了。比如:dispatchservlet,handlerMapping,handlerAdapter,viewReslover。顺便贴图给大家:

1、用户发送请求至前端控制器DispatcherServlet

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5、执行处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9、ViewReslover解析后返回具体View

10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户


二、你使用过Spring mvc的话,那么就该让你谈一谈和Strust2的区别,有什么优点,知道以下内容,基本也就可以了。

Struts2是类级别上的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文。而且Struts过滤后是去Struts配置文件中找Action,每个类的请求你都要配置对应的拦截器。而SpringMVC过滤后是去controller中找对应于@RequestMapping注解的url绑定的方法。

也因为拦截器原因,导致Struts2的action比较乱,因为它要定义属性来获取请求中参数的数据,而属性在一个类的方法间是共享的(方法间不能独享request、response数据),属于多例模式。所以会有点乱。而SpringMVC中请求参数与controller中方法的形参自动配对(在名字相同,或请求参数与形参的属性名相同,或通过@RequestParam注解指定条件下会自动将请求参数的值赋给形参)方法间可以独享request、response数据,属于单利模式。(单例模式,在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段)。

springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)

三、待续...(后面打算整理出关于面试经常碰到的问题,比如redis的数据类型,存储方式,集群配置;Mq消息的生产者,消费者问题;线程相关的线程池事项;spring的核心AOP和IOC的说辞;数据库动态读写分离与连接池;分布式等)。

参考链接:https://www.cnblogs.com/xiaoxi/p/6164383.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值