SpringMVC是基于Java实现的一个MVC设计模型的WEB架构,在三层架构上, SpringMVC应用在表现层上, 它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。
SpringMVC的优势。
1.清晰的角色划分
前端控制器(
DispatcherServlet
)
请求到处理器映射(HandlerMapping
)
处理器适配器(HandlerAdapter
)
视图解析器(
ViewResolver
)
处理器或页面控制器(
Controller
)
验证器(
Validator
)
命令对象(
Command
请求参数绑定到的对象就叫命令对象)
表单对象(
Form Object
提供给表单展示和提交到的对象就叫表单对象)。
其中每个角色各分其职,等自己的任务完成后才会交给其他角色
2
、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要。
3
、由于命令对象就是一个
POJO
,无需继承框架特定
API
,可以使用命令对象直接作为业务对象。
4
、和
Spring
其他框架无缝集成,是其它
Web
框架所不具备的。
5
、可适配,通过
HandlerAdapter
可以支持任意的类作为处理器。
6
、可定制性,
HandlerMapping
、
ViewResolver
等能够非常简单的定制。
7
、功能强大的数据验证、格式化、绑定机制。
8
、利用
Spring
提供的
Mock
对象能够非常简单的进行
Web
层单元测试。
9
、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
10
、强大的
JSP
标签库,使
JSP
编写更容易。
SpringMVC与Struts2对比
相同点:
1.都是表现层框架,都是基于MVC模型编写的
2.它们的底层都离不开ServletAPI
3.它们的处理机制都是一核心控制器
不同点:
1.SpringMVC的入口是Servlet,Struts2是一个Filter
2.SpringMVC是基于方法设计,Struts2是基于类。
3.SpringMVC的运行速度要比Struts2要快
4.Spring MVC 使用更加简洁,同时还支持 JSR303, 处理 ajax 的请求更方便
5.Struts2 的 OGNL 表达式使页面的开发效率相比 Spring MVC 更高些,但执行效率并没有比 JSTL 提
升,尤其是
struts2
的表单标签,远没有
html
执行效率高。