前言
SpringMVC也是面试必问的问题之一,包括但不限于SpringMVC执行流程等。
1.SpringMVC是什么?
Spring MVC属于SpringFrameWork的后续产品,是一个基于Java的实现了MVC设计模式的轻量级Web框架,降低开发难度和代码耦合度。其他Web框架还有Struts1和Struts 2等等。
2.SpringMVC的特点
1)可以支持各种视图技术,例如:JSP;
2)可以与Spring框架集成;
3)降低耦合度,各角色清晰分明,包括前端控制器(dispatcherServlet) 、处理器映射(handlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver);
3.SpringMVC的执行流程
1)用户发送请求到前端控制器DispatcherServlet;
2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handler;
3)处理器映射器HandlerMapping根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
4)DispatcherServlet 调用 HandlerAdapter处理器适配器;
5)HandlerAdapter 经过适配调用 具体处理器;
6)Handler执行完成返回ModelAndView;
7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
9)ViewResolver解析后返回具体View;
10)DispatcherServlet对View进行渲染视图;
11)DispatcherServlet将结果响应给用户。
4.常见的面试题
1)SpringMVC执行流程?
参考本文第三点。
2)@ResponseBody注解的作用
当返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用@ResponseBody注解;该注解通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
3)@PathVariable和@RequestParam的区别
localhost:8080/test/testPathVariable/java 类似这种情况,请求路径上有个name的变量值,可以通过@PathVariable来获取, @RequestMapping(value = “/page/{name}”, method = RequestMethod.GET)
localhost:8080/test/testRequestParam?name=java 类似这种的参数,用@PathVariable就不好使了,需要@RequestParam才行,@RequestParam(“name”) String name …