(一)区别:
1.机制上:①:Struts2入口是--->Filter。【通实现请求转发和初始化操作】;①SpringMVC 入口是--->Servlet。【实现请求转发和初始化操作】。
2.性能:SpringMVC比Struts2稍快。 【①SpringMVC基于方法【一个方法对应一个request上下文】-->根据注解来注入request数据;①Struts2基于类【一个Action对象对应一个request上下文】-->一个Action对应一个请求-->再调用setter getter方法来注入request中的数据】
3.传递参数:①Struts2 可以用属性接受参数。①SpringMVC不用属性获取。
4.设计思想上:①Struts2更加符合OOP(面向对象编程)的编程思想。 ①而SpringMVC就比较谨慎,在servlet上拓展。
5.intercepter的实现机制:①Struts2有自己的拦截器机制。①SpringMVC用的是独立的AOP方式--->SpringMVC的配置文件比Struts2多。
6.SpringMVC验证支持JSR303,处理起来更加灵活方便【亮点】
(二)Struts2框架
1.工作流程:
①客户端--(发送请求)-->②经过一系列过滤器FilterDispatcher--->③过滤器去解析sruts.xml(查找相应Action,没有则报错;有生成代理对象)--->④一系列拦截器Interceptor--->⑤直到调用Action类中的execute()方法(会产生结果result)--->⑥结果由Struts2的处理器-->⑦核心过滤器--->⑧服务器-->⑨响应到客户端。
图解:(拿来主义)
2.①属于类级别的拦截,一个请求---》对应一个Action,是基于类的。【方法之间独立,但是action变量是可以共享】
然后调用get和set方法把request请求中的数据注入其中。
②验证实现更加繁琐
(三)SpringMvc框架。
1.工作流程:
①客户端发起请求--->②DispatcherServlet(web.xml中配置前端控制器)-->③(请求HandlerMapping处理器映射器)查找Handler【根据xml、注解进行查找】-->④HandlerMapping向DispatcherServlet返回Handler--->⑤DispatcherServlet调用HandlerAdapter(处理器适配器)执行Handler--->⑥HandlerAdapter执行Handler-->
⑦Handler执行完成给HandlerAdapter返回ModelAndView-->HandlerAdapter向DispacherServlet返回ModelAndView【是SpringMVC框架的底层对象,包括Model和View】--->⑧DispacherServlet请求ResolverView(视图解析器)进行视图即系(解析成真正的视图jsp)-->⑨视图解析器向DispacherServlet返回View--->⑩DispacherServlet进行视图渲染(将模型数据【ModelAndView对象中】)填充到request域中--->11. DispacherServlet向用户响应(response)结果。
2.笼统的说:
处理流程规范化的首要内容就是考虑一个通用的Servlet响应程序大致应该包含的逻辑步骤:
步骤1—— 对Http请求进行初步处理,查找与之对应的Controller处理类(方法) ——HandlerMapping
步骤2—— 调用相应的Controller处理类(方法)完成业务逻辑 ——HandlerAdapter
步骤3—— 对Controller处理类(方法)调用时可能发生的异常进行处理 ——HandlerExceptionResolver
步骤4—— 根据Controller处理类(方法)的调用结果,进行Http响应处理
3.①属于单列模式,基于方法的模式,粒度更细。【方法之间不共享变量,独享request response数据--->处理结果通过ModelMap交回给框架】。
②SpringMVC集成了Ajax,使用起来更加方便。只需要一个@ResponseBody就可以实现。