又是一个常问的面试题,真是面试一次长一次见识。html
那咱们先就从原理出发:前端
springMVC 原理(见下图):面试
一、 用户发送请求至前端控制器 DispatcherServlet。spring
二、 DispatcherServlet 收到请求调用 HandlerMapping处理器映射器。后端
三、 处理器映射器找到具体的处理器(能够根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(若是有则生成)一并返回给DispatcherServlet。app
四、 DispatcherServlet 调用 HandlerAdapter 处理器适配器。框架
五、 HandlerAdapter 通过适配调用具体的处理器(Controller,也叫后端控制器)。学习
六、 Controller 执行完成返回 ModelAndView。url
七、 HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。spa
八、 DispatcherServlet 将 ModelAndView 传给 ViewReslover视图解析器。
九、 ViewReslover 解析后返回具体 View。
十、DispatcherServle 根据 View 进行渲染视图(即将模型数据填充至视图中)。
十一、 DispatcherServlet 响应用户。
那么下面在说下 Struts2 的原理(以下图):
详情参考:Struts2 的工做原理(图解)详解 (写的真的很不错本菜鸟又学习了!)
框架原理的这种东西本菜鸟不理解的,慢慢学习吧。
了解完原理下面开始总结两者区别:
一、Struts2 是类级别的拦截, 一个类对应一个 reques t上下文,SpringMVC 是方法级别的拦截。
二、Struts2 的核心是基于一个过滤器即 StrutsPreparedAndExcuteFilter
SpringMvc的核心是基于一个 Servlet 即 DispatcherServlet前端控制器
...................
(更多细节看下博客)
SpringMVC 与 Struts2 区别与比较总结 - CSDN博客
水平有限,如有问题请留言交流!
互相学习,共同进步:) 转载请注明出处谢谢!