SpringMVC是当前最为优秀的一款MVC的框架,自从SpringMVC 2.5版本发布之后,由于支持了注解配置,大大的提升了易用性。SpringMVC3.0也逐渐优化完善,在市场占比超越了Struts2。成为一款主流的web层框架。
对于Springmvc3:
1.SpringMVC使用简单,学习成本低。面向方法。学习难度要比Struts2低,精简。
2.SpringMVC很容易就可以写出优秀性能,执行效率的程序,Struts2要处处小心才可以写出执行效率高的程序。相对来说给为上手。
3.SpringMVC的灵活是你无法想象的,Spring框架的扩展性是受大众认为的,SpringMVC当然也不会落后,不会因为使用了MVC框架而影响程序的运行。
在SpringMVC中有几个重要的接口和类:
DispatcherServlet --- 前置控制器
HandlerMapping接口 --- 处理请求的映射
HandlerMapping对应的实现类:
SimpleUrlHandlerMapping --- 通过配置文件,把一个URL映射到Controller
DefaultAnnotetionHandlerMapping --- 通过注解,把一个URL映射到Controller类上。
HandlerAdapter接口 --- 处理请求的映射
AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上。
Controller接口 --- 控制器
由于在开发中使用了@Controller注解,添加了@Controller注解的类就可以实现控制器的功能。
HandlerInterceptor接口 --- 拦截器
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
View接口
JstlView类
LocalResolver接口
HandlerExceptionResolver接口 --- 异常处理
SimpleMappingExceptionResolver实现类
ModelAndView类
SpringMVC的执行流程:
1.客户端通过url来发送请求
2.核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器配置找到对应的Handler,并将url映射的控制器Controller返回给核心控制器。
3.通过核心控制器找到系统或默认的适配器。
4.由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器
5.核心控制器将获取的数据和视频结合的对象传递给视图解析器,获取解析得到的结果,并且由视图解析器响应给核心控制器
6.核心控制器将结果返回解析给客户端。
对于执行流程中的映射器,视图解析器的作用:映射器负责将前端请求的url映射到配置的处理器,视图解析器将最终的结果进行解析,但是中间会经过一层适配器,因为SpringMVC为业务处理器提供了多种接口实现(实现了Controller接口),而适配器就是用根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行。