开发架构一般都基于两种形式,一种是C/S架构,另一种是B/S架构。
在JavaEE开发中,几乎全部都是基于B/S架构的开发。在B/S架构当中,系统标准的三层架构包括:表现层、业务层、持久层。
表现层:
它是Web层,负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求Web层,Web层需要接收http请求,完成http响应。
业务层:
它是Service层,负责业务逻辑处理,Web层依赖业务层,但是业务层不依赖Web层。
持久层:
它是Dao层,负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口。
业务层需要通过数据访问层将数据持久化到数据库当中,通俗的来讲,持久层就是和数据库进行交互,对数据库表进行增删改查。
MVC全名是Model View Controller,是模型-视图-控制器的缩写。
MVC是一种用于设计Web应用程序表现层的模式,其中的每个部分各司其职。
Model(模型)
通常指数据模型,一般情况下用于封装数据。
View(视图)
通常指jsp或者html,一般用于展示数据。
通常视图是依据模型数据创建的。
Controller(控制器)
是应用程序中处理用户交互的部分,一般就是处理逻辑程序的。
SpringMVC是一种基于Java的,实现MVC设计模型的,请求驱动类型的,轻量级Web框架。属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。
Spring框架提供了构建Web应用程序的全功能MVC模块。
使用Spring可插入的MVC架构,从而在使用Spring进行Web开发时,可以选择使用Spring的Spring MVC框架或者集成其他的MVC开发框架。
SpringMVC已经成为了目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的MVC框架。
SpringMVC通过一套注解,将一个简单的Java类变成处理请求的控制器,并且无需实现任何接口。
SpringMVC同时还支持RESTful编程风格的请求。
清晰的角色划分
前端控制器(DispatcherServlet)
请求到处理器映射(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
处理器或页面控制器(Controller)
验证器(Validator)
命令对象(Command 请求参数绑定到的对象就叫命令对象)
表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)
分工明确,而且扩展点相当灵活,可以很容易进行扩展,虽然几乎不需要。
因为命令对象就是一个pojo,无需继承框架特定API,可以使用命令对象直接作为业务对象。
和Spring其他框架无缝集成,是其他Web框架所不具备的。
可适配。通过HandlerAdapter可以支持任意的类作为处理器。
可定制。HandlerMapping、ViewResolver等能够非常简单的定制。
功能强大的数据验证、格式化、绑定机制。
利用Spring提供的Mock对象能够非常简单的进行Web层单元测试。
本地化、主题的解析的支持,让我们更容易进行国际化和主题的切换。
强大的JSP标签库。
共同点
它们都是表现层框架,都是基于MVC模型编写的。
它们的底层都离不开原始的ServletAPI。
它们处理请求的机制都是一个核心控制器。
区别
SpringMVC的入口是Servlet,Struts2是Filter。
SpringMVC是基于方法设计的,而Struts2是基于类,Struts每次执行都会创建一个动作类。所以SpringMVC会比Struts2稍微快一些。
SpringMVC更加简洁,同时还支持JSR303,处理Ajax的请求更加方便。
Struts2的OGNL表达式使页面的开发效率相比SpringMVC更高一些,但是执行效率没有比JSTL提升,尤其是Struts2的表单标签,远远没有html的执行效率高。
JSR303是一套JavaBean参数校验的标准,它定义了很多常用的注解校验,我们可以直接将这些注解加在我们的JavaBean属性上面,可以直接在需要校验的时候直接进行校验。
原文:https://www.cnblogs.com/guancangtingbai/p/12642210.html