SpringMVC面试题详解
简介
SpringMVC是一个基于Java并且实现了MVC设计模式的请求驱动类型的轻量级WEB框架,通过把Model、View、Controller分离,将Web层进行职责解耦,把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便开发人员之间的配合;
流程
- 用户发送请求到前端控制器DispatcherServlet
- DispatcherServlet收到请求,访问HandlerMapping处理器映射器,请求获取Handler
- HandlerMapping根据配置或者注解找到最终要执行的Handler返回Handler
- 前端控制器请求HandlerAdapter适配器处理器执行Handler
- Handler执行完毕返回ModelAndView逻辑视图
- 前端控制器访问ViewResolver视图解析器解析成为真正的视图,返回View给前端控制器
- 前端控制器将Model数据进行视图渲染最终展示给用户
优点
- 可以支持多种视图技术如Freemarker、thymeleaf等,不仅仅只局限于JSP
- 与Spring框架集成(如IOC、AOP)
- 清晰的角色分配:DisipatcherServlet、HanderMapping、AdapterHandler、ViewResolver
- 支持各种请求资源的映射策略
组件
- DispatcherServlet(不需要程序员开发) 作用:接受请求、响应结果,相当于转发器
- HandlerMapping处理器映射器(不需要程序员开发) 作用:根据请求的Url查找Handler
- HandlerAdapter适配器处理器 注意:编写Handler时需要遵从HandlerAdapter规则去编写才能正确的执行Handler
- Handler(Controller)处理器(需要程序员开发)
- ViewResolver视图解析器(不需要程序员开发) 作用:将逻辑视图解析成真正的视图
- View视图(需要程序员开发) View是一个接口,他的视线可以是JSP、freemarker、PDT、thymeleaf等
SpringMVC与Struts2的区别
springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。
SpringMVC重定向与转发
转发:在返回值前面加”forward:”,譬如”forward:user.do?name=method4”
重定向:在返回值前面加”redirect:”,譬如redirect:http://www.baidu.com
SpringMVC优缺点
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 九世!
评论