SpringMVC工作原理

一:SpringMVC流程框架总体介绍?

SpringMVC属于SpringFrameWork的后续产品,已经融合在spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能MVC 模块,其功能和Strtus2,Struts1是类似的,只不过是实现的原理不同而已。其中Struts2是通过过滤器来实现路劲和action的映射等控制流转功能,而Struts1和SpringMVC则是通过最传统的servlet来实现对其代码封装的,但是都是非常相似的MVC流程框架。

SpringMVC是一个MVC的流程框架,同样适用在我们的表现层到action模块中,是MVC架构模式中真正的Controller。SpringMVC在流程处理方面更加灵活,可以很容易的进行扩展,可以和Spring框架进行无缝集成。但是SpringMVC有侵入性,action需要继承框架指定的类,或者实现指定的接口,它提供了构建 Web 应用程序的全功能 MVC 模块。

springmvc实现原理图:



看到如上图则总结下springmvc工作原理:

在整个springMVC框架中,dispatcherServlet处于核心位置,负责协调和组织不同组件以完成请求处理并返回响应工作

1.客户端发送一个请求匹配dispatcherServlet的请求映射路径(web.xml),web容器将该请求转交给dispatcherServlet处理。

2.dispatcherServlet接收到请求后,将请求信息(包括url,http,请求头,请求参数,cook等)以及HandlerMapping的配置找到处理请求的处理器Handler

3.dispatcherServlet根据HandlerMapping得到对应请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

4.处理器完成业务逻辑的处理后将返回一个ModelAndView给dispatcherServlet,ModelAndView包含视图逻辑名和模型数据信息。

5.dispatcherServlet借助ViewResoler完成逻辑视图名到真实视图对象的解析。

6.得到真实视图对象后,dispatcherServlet使用这个view对ModelAndView中的模型数据进行视图渲染。


二:springmvc重要接口介绍?

DispatcherServlet:前端控制器,用于接收请求,springmvc核心
HandlerMapping接口:用于处理请求的映射。
DefaultAnnotationHandlerMapping:HandlerMapping接口的实现,用于把一个URL映射到具体的Controller类上。
HandlerAdapter接口:用于处理请求的映射。
AnnotationMethodHandlerAdapter:HandlerAdapter接口的实现,用于把一个URL映射到对应Controller类的某个方法上。
ViewResolver接口:用于解析View。
InternalResourceViewResolver:ViewResolver接口的实现,用于把ModelAndView的逻辑视图名解析为具体的View。


三:springmvc与struts2比较?

1.springmvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,一个方法对应一个request上下文,而方法同时又跟一个url对应,而struts2是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入,struts2中一个Action对象对应一个request上下文,struts2中action一个方法对应一个url,但是其类的属性被所有方法所共享。
2.springmvc的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,方法之间不共享变量。而struts2虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码读程序时带来麻烦。
3.springmvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便只需一个注解@ResponseBody然后直接返回响应文本即可。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值