Java EE部分--MVC

● 请谈一下Spring MVC的工做原理是怎样的? 

考察点:设计模式前端

参考回答:

①客户端的全部请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其余模块来真正处理用户的请求。
② DispatcherServlet收到请求后,将根据请求的信息(包括URL、HTTP协议方法、请求头、请求参数、Cookie等)以及HandlerMapping的配置找处处理该请求的Handler(任何一个对象均可以做为请求的Handler)。
③在这个地方Spring会经过HandlerAdapter对该处理器进行封装。
④ HandlerAdapter是一个适配器,它用统一的接口对各类Handler中的方法进行调用。
⑤ Handler完成对用户请求的处理后,会返回一个ModelAndView对象给DispatcherServlet,ModelAndView顾名思义,包含了数据模型以及相应的视图的信息。
⑥ ModelAndView的视图是逻辑视图,DispatcherServlet还要借助ViewResolver完成从逻辑视图到真实视图对象的解析工做。
⑦ 当获得真正的视图对象后,DispatcherServlet会利用视图对象对模型数据进行渲染。
⑧ 客户端获得响应,多是一个普通的HTML页面,也能够是XML或JSON字符串,还能够是一张图片或者一个PDF文件。spring

● 请简述一下SpringMVC的运行机制?以及运行机制的流程是什么?

考察点:spring编程

参考回答:

一、用户发送请求时会先从DispathcherServler的doService方法开始,在该方法中会将ApplicationContext、localeResolver、themeResolver等对象添加到request中,紧接着就是调用doDispatch方法。设计模式

二、进入该方法后首先会检查该请求是不是文件上传的请求(校验的规则是是不是post而且contenttType是否为multipart/为前缀)即调用的是checkMultipart方法;若是是的将request包装成MultipartHttpServletRequest。安全

三、而后调用getHandler方法来匹配每一个HandlerMapping对象,若是匹配成功会返回这个Handle的处理链HandlerExecutionChain对象,在获取该对象的内部其实也获取咱们自定定义的拦截器,并执行了其中的方法。mvc

四、执行拦截器的preHandle方法,若是返回false执行afterCompletion方法并理解返回app

五、经过上述获取到了HandlerExecutionChain对象,经过该对象的getHandler()方法得到一个object经过HandlerAdapter进行封装获得HandlerAdapter对象。spring-boot

六、该对象调用handle方法来执行Controller中的方法,该对象若是返回一个ModelAndView给DispatcherServlet。post

七、DispatcherServlet借助ViewResolver完成逻辑试图名到真实视图对象的解析,获得View后DispatcherServlet使用这个View对ModelAndView中的模型数据进行视图渲染。spa

● 请说明一下springmvc和spring-boot区别是什么?

考察点:spring

参考回答:

总的来讲,Spring 就像一个你们族,有众多衍生产品例如 Boot,Security,JPA等等。但他们的基础都是Spring 的 IOC 和 AOP,IOC提供了依赖注入的容器,而AOP解决了面向切面的编程,而后在此二者的基础上实现了其余衍生产品的高级功能;由于 Spring 的配置很是复杂,各类xml,properties处理起来比较繁琐。因而为了简化开发者的使用,Spring社区创造性地推出了Spring Boot,它遵循约定优于配置,极大下降了Spring使用门槛,但又不失Spring本来灵活强大的功能。

● 请说明一下Spring MVC注解的优势是什么?

考察点:spring mvc

参考回答:

一、XML配置起来有时候冗长,此时注解多是更好的选择,如jpa的实体映射;注解在处理一些不变的元数据时有时候比XML方便的多,好比springmvc的数据绑定,若是用xml写的代码会多的多;

二、注解最大的好处就是简化了XML配置;其实大部分注解必定肯定后不多会改变,因此在一些中小项目中使用注解反而提供了开发效率,因此不必一头走到黑;

三、注解相对于XML的另外一个好处是类型安全的,XML只能在运行期才能发现问题。

相关文章
相关标签/搜索