理解Web应用程序的代码结构和运行原理(3)

1、理解Web应用程序的运行原理和机制

Web应用程序是基于浏览器/服务器模式(也称B/S架构)的应用程序,它开发完成后,需要部署到Web服务器上才能正常运行,与用户交互的客户端是网页浏览器。

浏览器负责显示来自服务器的数据和接受用户的输入数据,也称为“与用户交互”;服务器负责处理浏览器的访问请求,并把处理结果(数据或消息)组织成浏览器可以识别的格式文本返回。

Web应用程序的主要特点如下:

1)浏览器主动请求服务器资源。在Web应用程序中,一般是浏览器首先向服务器发起访问某个网页或某些数据的请求。

2)服务器被动响应浏览器请求。服务器收到浏览器的访问请求后,根据请求的事项执行相应的业务逻辑代码,一般还要连接数据库提取或处理数据,并把提取的数据或处理结果,组织成HTML或JSON格式或普通文本,返回给浏览器。这个过程称为响应和处理请求。

3)使用TCP/IP和HTTP协议通信。Web应用程序的服务器与浏览器之间,约定使用TCP/IP和HTTP协议交换数据。其中:TCP/IP是传输控制协议,HTTP是文本数据格式协议。

4)Web应用程序的安装部署简便。Web服务器和浏览器是一对多的关系,即一个服务器可以同时满足多个浏览器的访问请求。由于浏览器一般随操作系统(如:Windows系统)附带安装,与Web应用程序无关,不需要开发者维护。所以,Web应用程序开发者只需要考虑在Web服务器上部署和维护应用程序,相对于C/S架构的应用程序,大大减轻了应用程序的部署、安装和维护工作量,提高了维护效率。

2、认识JavaWeb应用程序结构

使用java开发Web应用程序已经走过了漫长的路程,期间出现过多种典型的Web应用程序结构。包括:

2.1  JSP页面结构

浏览器直接请求JSP页面,JSP中包含了处理各种业务的逻辑代码。其结构图如下:

该种结构的特点是大量Java 脚本代码直接嵌入在JSP页面中。对于简单的应用程序,不失为一种直接简便的方法。但是这种结构很难做到代码重用,不利于功能模块的规划和设计。

2.2  JavaBean页面结构 

为了改进JSP页面结构的不足,我们将处理后台资源的逻辑代码用Bean进行封装,发展成为带Bean的页面结构,再结合自定义标签,可将一部分代码从JSP中移出,获得较为干净的JSP页面。如下图所示:

但是这种结构随着功能的增加,层次变得不够清晰,可扩展性不好,不利于应用程序的维护。

2.3  MVC结构 

MVC是三个英文单词Model-View-Control首字母的缩写,中文就是“模型-视图-控制器”的意思。

MVC结构将Web应用程序代码按照基本任务划分为三个部分: 模型实现数据封装和业务逻辑,视图实现用户交互界面,控制器整合模型和视图,并根据请求调用对应的模型和视图。

MVC结构比较科学、合理地解决了任务分工与整合,业务功能扩展和代码维护的问题,被业界广泛接受,是最典型、最成功的网络应用程序结构。MVC结构处理用户请求的基本步骤如下:

(1)浏览器向服务器发出访问请求,服务器收到请求后转发给控制器;

(2)控制器检查客户请求URL,初始化管理对象,调用相应的业务模型来处理请求;

(3)模型包括处理客户请求的所有业务规则,它与数据库和文件资源交互,将提取的数据包装成对象返回给控制器;

(4)控制器接收模型返回的数据,选择显示数据的JSP页面,即视图;

(5)JSP页面将数据嵌入到HTML元素中,生成标准的HTML页面文本,返回给浏览器。

(6)浏览器显示HTML网页,完成一个请求和响应回合。

使用java实现MVC结构的典型方案,是使用Bean创建模型,JSP创建视图,Servlet实现控制。

3、理解Servlet与Servlet容器 

Servlet本身是一种特定的运行机制,有一套规范的编程接口(API),支持请求和响应过滤器。但我们一般将Servlet理解为程序员编写的符合Servlet规范,并由Servlet容器来调用和执行的Java类。它可以对任何类型的请求进行处理和响应,别称“服务器小程序”。

编写一个Servlet,就是按照Servlet规范编写一个Java类。但是它没有main方法,不能独立运行,必须部署到Servlet容器中,由容器来实例化并调用它的相关方法(如:doGet()和doPost()方法)。

Servlet容器也叫Servlet引擎,是Web服务器的一部分。它在Servlet生命周期内管理Servlet,并负责解析基于MIME的请求文本,以及格式化基于MIME的响应数据。

Tomcat就是一款包括Servlet容器的Web服务器。Tomcat服务器接受客户请求并做出响应的过程如下:

1)客户端浏览器访问Web服务器,发送访问Servlet的HTTP请求。

2)Web服务器接收到请求后,传递给Servlet容器。

3)Servlet容器初始化Servlet实例,调用实例的Service()方法,并向其传递两个对象参数:表示请求的HttpServletRequest对象和表示响应的HttpServletResponse对象。

4)Servlet实例使用HttpServletRequest对象获取客户的请求信息,然后进行相应的处理。

5)Servlet实例将处理结果通过HttpServletResponse对象返回给容器,容器负责确保处理结果正确地发送给浏览器,同时将控制权返回给Web服务器。

6)Servlet一旦实例化就一直保存在内存中,直到Web服务器停止运行应用程序时,再销毁Servlet实例。

提示:Web浏览器并不直接和Servlet通信。Servlet是由Servlet容器加载和执行的。常用的MIME类型有:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip等等。

原文地址:https://www.cnblogs.com/xuzy630/p/XWAF_3.html

时间: 2024-10-14 05:23:21

理解Web应用程序的代码结构和运行原理(3)的相关文章

单一入口web应用程序概述:结构,特点,优点,缺点/php,asp,jsp

单一入口应用程序概述 什么是单一入口应用程序? 在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序.news.php 显示新闻列表news_edit.php 显示新闻编辑页面这两个页面不但分别实现了两个功能,还成为了应用程序的两个入口. 那什么是入口啊?打个比方,大家上 WC,都是男生进一个门,女生进一个门.这两个门就是 WC 的两个入口. 呵呵,上面的例子应该很好理解吧.那稍微变换一下,单一入口的概念就很容易理解了.现在我们是进一个公共 WC,不管男女都是从最外面的入口进入

Web应用程序的目录结构

一个Web应用程序基本上由以下项目组成: 1.静态资源(HTML,CSS,图片,声音等) 2.Servlet 3.JSP 4.自定义类 5.工具类 6.部署描述文件(web.xml等).设置信息(Annotation等) Web应用程序目录结构必须符合规范.例如,如果一个应用程序的环境路径(Context path)是/HelloServlet,则所有的资源项目必须以/HelloServlet为根目录依规定结构摆放.基本上根目录中的资源可以直接下载,若index.html位于/HelloServ

如何理解Web应用程序的MVC模型?

View,也就是视图/视野,是你真正看到的,而非想象中的 Model.Controller,也就是控制器,是你用来改变 Model 方式.简单的说 Controller 和 View 分别是 Model 的 输入 和 输出. 说到底,View 和 Controller 可以是 Model 的一部分.为人么要单独把他们跟 Model 分开呢?因为 View 和 Controller 是外在的东西,只有 Model 是本质的东西.外在的东西天天变化,但很少影响本质.把他们分开比较容易维护.

第一章 Web应用程序开发基础

一.HTTP协议工作机制 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它是一种主流B/S架构中应用的通信协议.具有以下特点:1.无状态 服务端不会记录客户端每次提交的请求,服务器一旦相应客户端之后,就会结束本次的通信过程.客户端下一次的请求是一个新的 连接,和上一次通信没有任何关系.2.简单灵活 HTTP是基于请求(request)和响应(response)的模型3.支持客户端与服务端 支持主流的B/

了解ASP.NET5 Web应用程序结构

本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目结构 Framework 运行时 pr

(转)Web是如何工作的(2):客户端-服务器模型,以及Web应用程序的结构

在上一部分的文章中,我们深入了解了Web在基础层面是如何工作的,其中包括客户端(你的电脑)与服务器(另一台响应客户端请求网页的电脑)交互. 在这篇文章--四篇文章中的第二篇--我们一起来了解客户端,服务器以及基本Web应用程序的其它部分如何配置,才使得浏览网页的体验成为可能. 客户端-服务器模型 客户端与服务器跨越网络通信的概念被称为"客户端-服务器"模型,这使得浏览网站(如你查看该文章)和与Web应用程序(如GMail)交互成为可能. 客户端-服务器模型实际上只是描述客户端与Web应

java web 程序---缓冲代码

在写验证码的时候,我的验证码是随机的,所以每次点击时,刷新页面,验证码都会改变. 可是,当我点击刷新时,验证码不变,说明,没有缓冲. 这里差三行代码. response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0);

NET5 Web应用程序

ASP.NET5 Web应用程序结构 本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目

【JavaScript】使用面向对象的技术创建高级 Web 应用程序

本文讨论: JavaScript 是基于原型的语言 用 JavaScript 进行面向对象的编程 JavaScript 编码技巧 JavaScript 的未来 本文使用了以下技术: JavaScript   目录 JavaScript 对象是词典 JavaScript 函数是最棒的 构造函数而不是类 原型 静态属性和方法 闭包 模拟私有属性 从类继承 模拟命名空间 应当这样编写 JavaScript 代码吗? 展望 最近,我面试了一个有五年 Web 应用程序开发经验的软件开发人员.四年半来她一直