Struts2与SpringMVC的区别

时间:2023-02-26 13:09:19

(一)区别:

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的处理器-->⑦核心过滤器--->⑧服务器-->响应到客户端。

图解:(拿来主义)

Struts2与SpringMVC的区别

2.①属于类级别的拦截,一个请求---》对应一个Action,是基于类的。【方法之间独立,但是action变量是可以共享

然后调用get和set方法把request请求中的数据注入其中。

验证实现更加繁琐

(三)SpringMvc框架。

1.工作流程:

Struts2与SpringMVC的区别

 

 ①客户端发起请求--->②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就可以实现。