一、SpringMVC是什么
SpringMVC是一种基于Java的、实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring FrameWork的后续产品,已融合在Spring Web Flow中。
SpringMVC通过一套注解,让一个简单的Java类成为处理请求的控制器(与Servlet技术对比),无需实现任何接口,还支持RESTful编程风格的请求。
二、SpringMVC的优势
1、清晰的角色划分(可以把SpringMVC想象成一个代码工程,角色就是其中的模块或组件)
前端控制器(DispatcherServlet)
请求处理器映射器(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
处理器或页面控制器(Handler/Controller)
验证器(Validator)
命令对象(Command 指请求参数绑定到的对象)
表单对象(Form Object 指提供给表单展示和提交到的对象)
2、分工明确、易于扩展。
3、命令对象就是一个POJO,无需继承框架特定API,可将命令对象直接作为业务对象。
4、可与Spring框架无缝集成,是其他Web框架所不具备的。
5、可适配,通过HandlerAdapter可支持任意类作为处理器。
6、可定制,HandlerMapping、ViewResolver等可非常简单的定制。
。。。。。。
三、SpringMVC和Struts2的对比
1、共同点
都是表现层框架,都是基于MVC模型编写的。
底层都离不开原始ServletAPI。
处理请求的机制都是使用一个核心控制器。
2、不同点
SpringMVC的入口是Servlet,Struts2是Filter。
SpringMVC是基于方法设计的(单例的),Struts2是基于类的(多例的),Struts2每次执行都会创建一个动作类,所以SpringMVC的执行速度比Struts2稍微快一些。
SpringMVC使用更加简洁,还支持JSR303,处理ajax请求更方便。(JSR303是一套JavaBean参数校验标准,定义了很多常用的校验注解,可以直接将这些注解加在JavaBean的属性上,执行校验)
Struts2的OGNL表达式使页面开发效率较高,但执行效率并没有比JSTL提升,尤其是Struts2的表单标签,远没有html执行效率高。