springMVC框架(二)---springMVC框架高级开发

  首先在了解这个问题的时候我们需要明白什么是MVC,在前一篇提及的各种组件以及响应是如何的?

1.什么是springMVC?

 

springMVC全名Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。有的朋友是直接上手学的框架可能并没有感受到框架真正的好处,这里我打一个比方:一个工厂在加工一样东西的时候,需要进行材料采购、打磨、精加工。这里有三个工人,一个负责采购、打磨,一个又负责打磨、精加工,最后一个又负责采购、精加工。这里我们就会发现问题了,当我们最后产品出来的时候出问题了,那我们找谁,是那一块的问题呢?如果这三个人分别负责采购、打磨、精加工,我们会发现我们就会发现问题就很好发现了,这个分工的过程我们也可以看做解耦的过程。springMVC就相当于我们的解耦工具web层进行职责解耦,简化我们的开发。

 

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。约定大于配置这句话很关键一定要记清楚。

2.springMVC能够为我们的开发带来怎样的好处?

√让我们能非常简单的设计出干净的Web层和薄薄的Web层;

√天生与Spring框架集成(如IOC容器、AOP等);--->IOC(iInversion of Control):控制反转;AOP(Aspect Oriented Programming)切面编程

√提供强大的约定大于配置的契约式编程支持;

√能简单的进行Web层的单元测试;

√支持灵活的URL到页面控制器的映射;

√非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);

√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;

√提供一套强大的JSP标签库,简化JSP开发;

√支持灵活的本地化、主题等解析;

√更加简单的异常处理;

√对静态资源的支持;

√支持Restful风格。

3.springMVC的架构(在前一篇博客有一个简略的图)

可以结合前一篇博客的图好好的揣摩一下springMVC在MVC设计模式中的作用。如果有朋友不明白可以和我联系。

4.关联jar包部分

我想有朋友会问jar包部分的问题,我就把jar包给贴出来,好像myeclipse中自带,或者用Maven的同学可以直接写到配置文件里去拿包。这里要说的是这些spring的包均需要是3.10以后的版本否则没办法支持springMVC。

spring-context-3.1.0.RELEASE.jar
spring-aop-3.1.0.RELEASE.jar
aopalliance-1.0.jar
spring-beans-3.1.0.RELEASE.jar
pring-core-3.1.0.RELEASE.jar
spring-expression-3.1.0.RELEASE.jar
spring-asm-3.1.0.RELEASE.jar
spring-webmvc-3.1.0.RELEASE.jar
spring-context-support-3.1.0.RELEASE.jar
spring-web-3.1.0.RELEASE.jar
aspectjrt-1.6.9.jar
slf4j-api-1.5.10.jar
jcl-over-slf4j-1.5.10.jar
slf4j-log4j12-1.5.10.jar
log4j-1.2.15.jar
javax.inject-1.jar
servlet-api-2.5.jar
jsp-api-2.1.jar
jstl-1.2.jar
junit-4.7.jar

 

posted @ 2015-09-02 21:36  JAVACODEMAN  阅读(974)  评论(1编辑  收藏  举报