Spring系列面试题
一、什么是MVC框架?传统MVC框架存在的问题是什么?
什么是MVC框架:
MVC框架是为了解决传统传统MVC框架模式(JavaBean+Servlet+JSP)的一些问题而出现的框架
传统MVC框架模式存在的问题:
1.在传统的MVC框架模式中都需要将Servelt和Servlet的映射配置在web.xml中,所以一但项目变得庞大起来,web.xml也会变得太大。而且这种框架模式是不能够实现模块化管理的。
2.Servlet的主要功能就是接收参数、调用逻辑、跳转页面。但它同时还可以处理一些,像字符编码、文件上传这些功能。所以传统的MVC框架模式并不能让Servlet专注于它的主要功能,而需要处理一些本不该Servlet处理的其他功能。
3.传统的MVC框架模式接收参数只能使用request.getParameter()来接收,而且这种接收方式一次性只能接收一个参数,所以如果想要给业务逻辑层传递一个实体类的话就只能将实体类需要封装的参数,从前台单独传递过来,然后使用实体类的set方法来设置参数,设置完成后才能够真正传递一个实体类对象给业务逻辑层,进行操作。
4.跳转页面的方式比较单一,并且当页面名称发生改变时需要修改Servlet的源代码。
二、简单介绍下你对Spring MVC特点的理解
Spring MVC有这样一些特点:
1.它是基于组件技术的,它的全部应用对象,无论是控制器(Controller)还是视图解析器(ViewResolver)等,它们都是Java组件,并且和Spring提供的其他基础结构紧密相连。
2.它不依赖于Servlet API,但是它也可以在特定的场景下使用Servlet API。
3.它可以使用各种视图技术,并不仅限于JSP
4.它支持各种请求资源的映射策略
5.它是易于扩展的
三、简单的谈一下Spring MVC的工作流程
1.首先用户发送请求至前端控制器(DispatcharServlet),
2.DispatcharServlet收到请求后调用处理器映射器(HandlerMapping),
3.然后处理器映射器(HandlerMapping)找到具体的处理器(处理器映射器可以根据xml配置或者注解进行处理器的查找),如果查找了会自动生成处理器对象及处理器拦截器,如果没有查找到,则不生成。之后会一并返回给前端控制器(DispatcharServlet)
4.然后前端控制器(DispatcharServlet)会调用处理器适配器(HandlerAdapter)处理器适配器,处理器适配器会根据用户传递的参数调用具体的后端控制器(Controller)。
5.后端控制器(Controller)执行完成后会返回ModelAndView给处理器适配器(HandlerAdapter)
6.处理器适配器(HandlerAdapter)会将Controller的执行结果ModelAndView返回给前端控制器(DispatcherServlet)
7.前端控制器(DispatcharServlet)接收到ModelAndViewh后会将ModelAndView传给视图解析器(ViewResolver)
8.视图解析器(ViewResolver)会进行解析,解析成功后会返回具体的View
9.前端控制器(DispatcherServlet)会根据View进行渲染视图(及将模型数据填充至视图中)
10.最后前端控制器(DispatcherServlet)响应给用户
SpringMvc流程图:
四、什么是Spring
Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。
常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置
主要由以下几个模块组成:
Spring Core:核心类库,提供了IOC服务
Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);
Spring AOP:AOP服务
Spring Dao:对JDBC的抽象,简化了数据访问异常的处理
Spring ORM:对现有ORM框架的支持
Spring Web:提供了基本的面向Web的基本特性,例如多方文件上传
Spring MVC:提供了面向Web应用的Model-View-Controller实现
五、Spring有哪些优点?
1.Spring属于低侵入式设计、代码的污染极低
2.Spring的Dl机制将对象之间的依赖关系,交给框架处理,减少组件的耦合性
3.Spring提供了AOP技术,支持将一些通用任务,如事务、日志、安全、权限等进行集中式管理,从而能够更好的复用
4.Spring对主流的应用框架提供了集成支持