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