spring-webmvc
also known as the Web-Servlet module:
也被称为Web-Servlet模块,为什么会被称为Web-Servlet模块呢?webmvc和Web-Servlet等价吗?或许
要解决这两个问题我们得先了解 什么是webmvc?什么是Servlet?
什么是webmvc?
MVC是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使
用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和
PHP的开发者的欢迎。
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
1)Model(模型)表示应用程序核心(比如数据库记录列表)。
2)View(视图)显示数据(数据库记录)。
3)Controller(控制器)处理输入(读取、写入数据库记录)。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依
赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
什么是Servlet?
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程
序。
主要功能在于交互式地浏览和修改数据,生成动态Web内容。服务器上需要一些程序,常
常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,
CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。
在通信量大的服务器上,Java Servlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
contains
Spring’s model-view-controller (MVC) and REST Web Services implementation for web applications
contains(包含),spring-webmvc模块包含了什么呢?
Spring’s model-view-controller (MVC):spring框架的模型-视图-控制器(MVC)。
REST Web Services implementation for web applications:Web应用程序的REST Web Services实现。
什么是REST Web Services?
REST 定义了一组体系架构原则。
这组体系架构原则有什么作用呢?
您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模型。
事实上,REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计。
REST Web 服务遵循四个基本设计原则:
1)显式地使用 HTTP 方法。
2)无状态。
3)公开目录结构式的 URI。
4)传输 XML、JavaScript Object Notation (JSON),或同时传输这两者。
什么是显示的使用HTTP方法:
REST 要求开发人员显式地使用 HTTP 方法,并且使用方式与协议定义一致。 这个基本 REST 设计原则建立了创建、读取、更新和删除(create, read, update, and delete,CRUD)操作与 HTTP 方法之间的一对一映射。 根据此映射:
1)若要在服务器上创建资源,应该使用 POST 方法。
2)若要检索某个资源,应该使用 GET 方法。
3)若要更改资源状态或对其进行更新,应该使用 PUT 方法。
4)若要删除某个资源,应该使用 DELETE 方法。
什么是无状态:
REST Web 服务需要扩展以满足日益提高的性能要求。 具有负载平衡和故障转移功能、代理和网关的服务器集群通常以形成服务拓扑的方式进行组织,从而允许根据需要将请求从一个服务器路由到另一个服务器,以减少 Web 服务调用的总体响应时间。 要使用中间服务器扩大规模,REST Web 服务需要发送完整、独立的请求;也就是说,发送的请求包括所有需要满足的数据,以便中间服务器中的组件能够进行转发、路由和负载平衡,而不需要在请求之间在本地保存任何状态。
完整、独立的请求不要求服务器在处理请求时检索任何类型的应用程序上下文或状态。 REST Web 服务应用程序(或客户端)在 HTTP Header 和请求正文中包括服务器端组件生成响应所需要的所有参数、上下文和数据。 这种意义上的无状态可以改进 Web 服务性能,并简化服务器端组件的设计和实现,因为服务器上没有状态,从而消除了与外部应用程序同步会话数据的需要。
图 1 演示了一个有状态的服务,某个应用程序可能向这个服务发送请求,然后将结果集中在下一个页面,若该服务会跟踪应用程序离开的位置(结果集导航时)。 在这个有状态的设计中,该服务递增并在某个位置存储 previousPage 变量,以便能够响应来自下一个页面的请求。
类似如此的有状态的服务变得复杂化。 在 Java EE 环境中,有状态的服务需要大量的预先考虑,以高效地存储会话数据和支持整个 Java EE 容器集群中的会话数据同步。 在此类环境中,存在一个问题,它们经常在会话复制过程中艰难地查找引发 java.io.NotSerializableException 的根源,会耗费开发人员几天的时间,尝试构成服务器状态中或者在非常复杂的对象图表中查明实现了 Serializable 的对象。 此外,会话同步增加了开销,从而影响服务器性能。
如图2所示无状态的服务器相对有状态的服务器简单很多,很容易进行负载平衡的服务器的设计、编写和分布。 无状态的服务不仅性能更好,而且还将大部分状态维护职责转移给客户端应用程序。 在基于 REST 的 Web 服务中,服务器负责生成响应,并提供使客户端能够独自维护应用程序状态的接口。 例如,在针对多页结果集的请求中,客户端应该包括要检索的实际页编号,而不是简单地要求检索下一页
什么是公开目录结构式的URI?
实现这种级别的可用性的方法之一是定义目录结构式的 URI。 此类 URI 具有层次结构,其根为单个路径,从根开始分支的是公开服务的主要方面的子路径。 根据此定义,URI 并不只是斜杠分隔的字符串,而是具有在节点上连接在一起的下级和上级分支的树。 例如,在一个收集从 Java 到报纸的各种主题的讨论线程服务中,您可能定义类似如下的结构化 URI 集合:
provides
Spring’s MVC framework provides a clean separation between domain model code and web forms and integrates with all of the other features of the Spring Framework:
Spring的MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。
什么是领域模型?
业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。