SpringMvc 和struts2的不同点,以及他们的分别实现原理

时间:2023-02-26 13:03:59

Struts2与springmvc的区别
* 1: Struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用get和set方法吧request中的数据注入.
* Struts2中一个action对应一个requset上下文.
* 2 :SpringMVC是方法级别的拦截,拦截到方法后根据参数的注解,把requset数据注入进去springmvc容器中
* 一个方法对应一个request上下文.
* 3 :springmvc方法之间基本独立,独享requset和response之间的数据。请求数据通过参数获取,处理结果通过model Map交回给框架。(方法之间不共享变量)
* Struts虽然方法之间也是独立的,当时action变量是可以共享的
* 4 :处理ajax的请求很方便,只需一个注解2responseBody ,直接返回响应文本。
* 5 :SpingMVC的实现是servlft.Struts2是filter。
* 6 :intercepter的实现机制。Struts 有自己的拦截器机制.interceptor,Springmvc用的是独立的AOP方式,导致Springmvc的配置文件比struts2的配置文件多.

 

SpringMVC的工作流程
* 1 :先是客户端发出一个http请求给服务器,web服务器对http请求解析, 如果匹配到DispatcherServlet的请求映射路径(在web.xml文件中指定) web容器将请求转交给DispatcherServlft
* 2 :DispatcherServlet接收到这个请求之后,根据请求的信息(包括url,http,请求报文头,和请求参数Cookie等),以及HandlerMapping的配置赵大鹏处理请求的处理器(handler)

3:DispatcherServlet根据HandlerMapping找到对应的Handler,并将处理权交给Handler,在有具体的HandlerAdapter对handler进行具体的调用.
* 4Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet.
* 5Handler返回的视图是一个逻辑视图并不是真正的视图,DispatcherServlft通过ViewResolver将逻辑视图转换为真正的视图View
* 7 Dispatcher通过model解析出ModelAndView()参数进行解析,最终展出出完整的view并返回给客户端