web应用程序运行原理

web应用程序运行原理
web应用程序运行原理

WEB应用程序介绍

Web应用程序就是一种通过互联网能够让Web浏览器和服务器通讯的计算机程序。不同于静态网站的,Web应用程序动态创建页面。采用动态方式生成的Web站点通过使用计算机程序来实现动态的特性。这种动态的应用程序可以用各种计算机语言来编写。运行Web程序所需要的最基本的组成部分有:网页,Web服务器,客户端浏览器以及在客户端和Web服务端提供通讯的HTTP 协议。

网页:网页的具体组成分为网页的内容,是我们想要向用户展示的信息;网页的结构部分,可以理解为对网页的内容进行排版;网页的表现部分,可以理解为对网页的内容进行格式化;最后是网页的行为部分,就是网页需要实现的功能,如与用户交互,响应鼠标或者按键事件等。

Web服务器:Web服务器实际上是一种连接在Internet上的计算机软件。它负责Web 浏览器提交的文本请求。是用来存放我们编写好的网页并监听端口。

Web工作原理:简单的讲就是先把编写好的网页存在服务器上,服务器监听发送过来的HTTP 请求,和客户端建立一个连接,接收到客户端的请求之后,把用户需要的内容封装成HTTP请求发送给客户端,然后断开与客户端的连接,之后客户端的浏览器解析HTML,显示网页内容。

HTTP协议:该协议描述了Client和Server之间请求和响应的过程:Client在本地主机向运行于远程主机上的Server请求链接,连接成功之后通过GET来访问Server端对象(可以是普通网页,也可以是通过CGI或ISAPI生成的动态页面),Server端在连接终止之前将请求的对象或者是错误消息返回给Client,结束响应过程。

JA V A WEB应用程序结构:

1、页面中心结构:浏览器对JSP页面的直接请求调用,JSP中直接包含了处理各种业务的逻辑代码,其结构图如图所示:

该种结构的特点是大量的Java scriptlet代码直接嵌入JSP页面中,对于较为简单的应用程序,不失为一种直接简便的方法,但是此种方法减少了模块重用的机会,且不利于角色功能的划分。于是,

我们将处理后台资源的逻辑代码用Bean进行封装,发展成为带Bean的页面中心结构:

带Bean的页面中心结构再结合自定义标志,确实可将一部分代码从JSP中移出,获得较为干净的JSP,但是此种结构随着其功能的增加,层次变得不够清晰,其扩展性也变得较差,不利于维护。

2、MVC结构

MVC即模型视图控制器(Model-View-Control),这3个组件映射到3个主要的实现技术—Bean,JSP以及Servlet。

模型执行业务逻辑的功能,比如保存处理数据、与数据库连接、拼装SQL语句等。视图执行显示逻辑的功能,即将获取的数据动态显示于网页上。控制器是模型和视图的粘和剂,向模型和视图提供逻辑处理层和授权,即对不同事件调用相应的视图和模型。下面结合上图分析基于MVC结构的应用程序在处理用户请求时的具体步骤::

(1) 浏览器发出服务请求,该请求转发给控制器;

(2) 控制器在检查用户请求的参数后,初始化并调用相应的业务组件来处理请求,该业务组件就

叫做模型;

(3) 模型含有处理该用户请求的所有业务规则,它与后台资源进行交互,并将提取的信息包装起

来返回给控制器;

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

(5) 控制器在处理完请求后将结果返回给浏览器

较流行的结构:struts负责显示层,hibernate负责持久层,spring负责中间的业务层。

jsp和servlet的关系

一.Servlet是什么?

客户机/服务器计算的发展。Java提供了一整套客户机/服务器解决方案,在这个方案中,程序可以自动地下载到客户端并执行,这就是applet。但是它仅仅是问题的一半。问题的另一半就是Servlet。

servlet可以被认为是服务器端的applet,是用Java编写的服务器端程序,由服务器端调用和执行的任何Java类。servlet被Web服务器加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种作业,然后返回结果。servlet的工作流程如下:

1、客户端通过HTTP提出请求。

2、Web服务器接收该请求并将其发给servlet。如果这个servlet尚未被加载,Web服务器将

把它加载到Java虚拟机并且执行它。

3、servlet将接收该HTTP请求并执行某种处理。

4、servlet将向Web服务器返回应答。

5、Web服务器将从servlet收到的应答发送给客户端。

Web浏览器并不直接和servlet通信,servlet是由Web服务器加载和执行的。

二、Servlet的结构

在Servlet API中最重要的是Servlet interface. 所有的servlets implement(执行)这个interface, 方式多种:或者是直接的,或者通过extending 这个class执行它。

当一个servlet接收来自客户端的调用请求, 它接收两个对象:一个是ServletRequest,另外一个是ServletResponse。ServletRequest class概括从客户端到服务器之间的联系,而

ServletResponse class 概括从servlet返回客户端的联系。

ServletRequest interface可以获取到这样一些信息如由客户端传送的阐述名称,客户端正在使用的协议,产生请求并且接收请求的服务器远端主机名。它也提供获取数据流的servlet:ServletInputStream,这些数据是客户端引用中使用HTTP POST 和PUT 方法递交的。一个ServletRequest的子类可以让servlet获取更多的协议特性数据. 例如: HttpServletRequest 包含获取HTTP-specific头部信息的方法。

ServletResponse interface给出相应客户端的servlet方法。它允许servlet设置内容长度和回应的mime类型,并且提供输出流:ServletOutputStream,可以发回相应数据。ServletResponse子类可以给出更多protocol-specific容量的信息。例如: HttpServletResponse 包含允许servlet操作HTTP-specific头部信息的方法。

三、servlet的主要功能

(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面。

(2) 创建可嵌入到现有HTML 页面中的一部分HTML 页面(HTML 片段)。

(3) 与其它服务器资源(包括数据库和基于Java 的应用程序)进行通信。

(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,

Servlet 可以是多参与者的游戏服务器。

(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将

该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如IIOP)进行通信。

(6) 对特殊的处理采用MIME 类型过滤数据。

(7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。

四、JSP是什么?

JSP是一种脚本语言,包装了Java Servlet系统的界面,简化了Java和Servlet的使用难度,同时通过扩展JSP标签(TAG)提供了网页动态执行的能力。尽管如此,JSP仍没有超出Java和Servlet 的范围,不仅JSP页面上可以直接写Java代码,而且JSP是先被译成Servlet之后才实际运行的。JSP在服务器上执行,并将执行结果输出到客户端浏览器,我们可以说基本上与浏览器无关。它是与JavaScript不同的,JavaScript是在客户端的脚本语言,在客户端执行,与服务器无关。JSP的工作流程如下图:

五、JSP和Servlet的区别与联系

JSP与Servlet之间的主要差异在于,JSP提供了一套简单的标签,和HTML融合的比较好,可以使不了解Servlet的人可以做出动态网页来。JSP修改后可以立即看到结果,不需要手工编译,JSP 引擎会来做这些工作;而Servelt则需要编译,重新启动Servlet引擎等一系列动作。

JSP引擎通常架构在Servlet引擎之上,本身就是一个Servlet。在JSP页面第一次被请求时,JSP引擎会将JSP原始文件转换成Servlet源代码,然后调用Java编译器,编译成Servlet,并在Servlet 引擎中执行。当再次有请求的时候,JSP引擎会检查已编译好的JSP是否比原来的JSP原始文件要新,如果是,运行Servlet;如果不是,表示文件已经更新的了,就会从新执行转换和编译的过程。

JSP语法简单,可以方便地嵌入HTML之中,很容易加入动态的部分,方便地输出HTML。在Servlet中输出HTML需要调用特定的方法,对于引号之类的字符也要做特殊的处理,加在复杂的HTML页面中作为动态部分,比起JSP来说是比较困难的。除去了转换和编译阶段,JSP和Servlet 之间的区别不大。

相关主题
相关文档
最新文档