跟开涛学SpringMVC
### 跟开涛学SpringMVC #### 第一章 WebMVC简介 ##### 1.1 Web开发中的请求-响应模型 在Web开发的世界中,客户端与服务器之间的交互遵循着一套基本的请求-响应模型。这个过程可以分为三个主要阶段: 1. **客户端发起请求**:通常是由用户的浏览器向服务器发送HTTP请求。例如,用户访问`http://sishuok.com`,这会触发一个HTTP GET请求。 2. **服务器接收并处理请求**:服务器(例如Tomcat)接收到客户端的请求后,会根据请求的具体内容进行相应的处理。如果是用户注册或者登录等操作,则可能涉及到数据库的操作,比如保存用户信息或者验证用户身份。处理完这些业务逻辑之后,服务器会生成一个响应,通常是HTML格式的内容,但也可能是JSON或其他格式的数据。 3. **服务器返回响应**:一旦服务器完成了对请求的处理,它会将响应内容(如HTML页面)发送回客户端。客户端(通常是浏览器)接收到响应后,会对HTML内容进行解析和渲染,从而展示给用户。 在这个模型中,服务器通常是被动的,只能等待客户端发起请求后才能进行响应。虽然传统的请求-响应模型不支持服务器主动推送数据给客户端,但随着技术的发展,如Comet技术或者HTML5的WebSocket协议,使得服务器能够实时地向客户端推送数据成为可能。 ##### 1.2 标准MVC模型概述 **MVC**(Model-View-Controller,模型-视图-控制器)是一种广泛应用于软件工程中的设计模式,尤其适用于Web应用的开发。它的主要目的是通过将应用程序的不同方面分离成独立的组件来提高代码的可维护性和可扩展性。 - **Model(模型)**:这是应用程序的核心组成部分,负责存储数据和业务逻辑。模型对象通常包括数据结构和相关的业务规则。在现代Web应用中,模型往往被细分为Value Object(值对象)和服务层。值对象仅包含数据,而服务层包含了业务逻辑。 - **View(视图)**:视图是用户界面的一部分,负责展示模型中的数据。视图通常是基于模型提供的数据构建的,并且可以随着模型数据的变化而更新。 - **Controller(控制器)**:控制器作为模型和视图之间的协调者,负责处理用户的输入,并将相应的请求传递给模型进行处理。控制器还会根据模型返回的结果来决定哪些视图应该被更新。 在标准的MVC模型中,模型能够通过观察者模式(Observer Pattern)主动向视图推送更新,但是这种机制在Web开发中并不适用,因为Web应用依赖于请求-响应模型。 ##### 1.3 WebMVC概述 **WebMVC**是MVC模式的一个特定变体,它专门针对Web应用进行了优化。与标准的MVC模型相比,WebMVC有一些显著的不同之处: - 在WebMVC中,由于采用的是请求-响应模型,因此模型无法主动向视图推送数据。这意味着,如果用户希望视图更新,必须重新发送一个请求。 - 控制器在WebMVC中扮演着至关重要的角色,它负责接收来自客户端的HTTP请求,并根据请求参数调用相应的业务逻辑(模型)。处理完成后,控制器将模型数据返回给视图,由视图负责展示结果。 WebMVC模式通过清晰地划分职责来简化Web应用的开发过程,使得开发者能够更轻松地管理和维护代码。 ##### 1.4 Web端开发发展历程 - **CGI(Common Gateway Interface)**:这是一种早期的Web技术,允许Web服务器执行外部程序来处理HTTP请求并生成动态内容。虽然CGI提供了强大的功能,但由于每次请求都需要创建一个新的进程,所以效率较低。 - **Servlet**:Servlet是一种基于Java的技术,允许开发者编写可以在Web服务器上运行的Java程序。与CGI不同,Servlet在服务器上作为线程运行,因此性能更高。Servlet可以处理HTTP请求,并返回动态生成的内容。 - **JSP(Java Server Pages)**:JSP是另一种基于Java的技术,它允许开发者在HTML文档中嵌入Java代码。JSP页面在第一次请求时会被编译成Servlet,然后在后续请求中以Servlet的形式运行。尽管JSP提供了一种简洁的方式来自动生成动态HTML内容,但它仍然存在代码混杂的问题,即控制逻辑、业务逻辑和视图逻辑没有完全分离。 随着Web技术的发展,人们逐渐意识到将控制逻辑、业务逻辑和视图逻辑分离的重要性,这也是MVC模式受到欢迎的原因之一。SpringMVC框架正是在这种背景下诞生的,它不仅实现了MVC模式的核心思想,而且还提供了一系列强大的特性,如依赖注入(DI)、面向切面编程(AOP)等,使得Web应用的开发变得更加高效和便捷。
剩余154页未读,继续阅读
- java-birds2015-02-28受教了。顶起
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助