springMVC基础篇
2015-05-31 21:45
501 查看
对于一个不懂技术的人来说springMVC是什么呢?有人会说:“春天里的MVC”这也许就是春天里的几个字母,不错在我没有接触java框架的时候留给我的记忆就是这样的。那么现在接触到了就让我们来好好讨论一下springMVC到底是什么吧?
WebFlow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的Spring Web 框架还可以是 Struts这样的 Web 框架。
如果嫌弃这些太官方的话,就加入自己的理解:通过它的名字就可以理解为是“spring+MVC”这个框架做的一件事就是将它们两个结合起来,发挥spring和MVC最大的功能,从而使java开发更方便快捷。
以上也说到它是spring和MVC的结合,既然结合那么必然是因为一方存在着一些不足,那么接下来就看看是什么让它们两个走到了一起。
通过策略接口,Spring
框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring
MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP
技术。SpringMVC
分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。通过以上的解释是不是有点顿悟,利用MVC将spring的各个角色分离,从而使它们之间的定制更灵活。
图一
![](http://img.blog.csdn.net/20150531214352446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1X3l1amllMjAxMWNvbQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图二
![](http://img.blog.csdn.net/20150531214532779?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1X3l1amllMjAxMWNvbQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
以下对第一幅图做进一步说明,如果这个理解了那么第二张图也就OK啦!
1.用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获
2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回
3.DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
4.提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter:将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
5.Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象
6.根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet
7.ViewResolver 结合Model和View,来渲染视图
8.将渲染结果返回给客户端。
对于一个不懂技术的人来说springMVC是什么呢?有人会说:“春天里的MVC”这也许就是春天里的几个字母,不错在我没有接触java框架的时候留给我的记忆就是这样的。那么现在接触到了就让我们来好好讨论一下springMVC到底是什么吧?
一、是什么?
百度百科上这样解释:Spring MVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的Spring Web 框架还可以是 Struts这样的 Web 框架。
如果嫌弃这些太官方的话,就加入自己的理解:通过它的名字就可以理解为是“spring+MVC”这个框架做的一件事就是将它们两个结合起来,发挥spring和MVC最大的功能,从而使java开发更方便快捷。
二、做什么?
说到做什么?不得不想为什么要用它,别的是否可以代替呢?那么就带着这一系列的疑问来探索吧!以上也说到它是spring和MVC的结合,既然结合那么必然是因为一方存在着一些不足,那么接下来就看看是什么让它们两个走到了一起。
通过策略接口,Spring
框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring
MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP
技术。SpringMVC
分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。通过以上的解释是不是有点顿悟,利用MVC将spring的各个角色分离,从而使它们之间的定制更灵活。
三、核心是什么?
谈到核心不得不想到两张原理图:图一
图二
以下对第一幅图做进一步说明,如果这个理解了那么第二张图也就OK啦!
1.用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获
2.DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回
3.DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
4.提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter:将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
5.Handler执行完成后,向DispatcherServlet返回一个ModelAndView对象
6.根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet
7.ViewResolver 结合Model和View,来渲染视图
8.将渲染结果返回给客户端。
四、总结
以上只是对springMVC的基础了解,别忘了纸上得来终觉浅,所以在今后的学习中还是要进一步实践,并多做一些demo来验证它的强大功能哦!加油!相关文章推荐
- java组播MulticastSocket
- Jstl标签库代替 struts2 标签
- java组播MulticastSocket
- java中的浅拷贝与深拷贝
- java.变量
- JAVA基础笔记——Collections与Arrays
- Spring的事件发布机制
- Spring学习笔记_装配bean_01
- Java获取用户ip
- JAVA final关键字,常量的定义
- STRUTS常见面试题
- Eclipse下导入外部jar包的3种方式
- spring整合quartz
- java中Calendar设置时间问题
- Java中Split函数的用法技巧
- 跟我学Java反射——四步曲
- Java常见的排序
- JAVA基础笔记——集合框架
- java compiler level does not match the version of the installed java project
- Java 正则表达式