JSP开发案例教程(2.1)

2. 1. 1 C / S 结构编程体系

        2000 年以前, C / S 结构占据开发领域的主流, 随着 B / S 结构的发展, C / S 结构的主流
地位已经逐步被 B / S 结构取代。 目前在整个开发领域中, C / S 结构的应用大概能占到 40%的份额。 C / S 结构应用程序最大特点是, 每个用户端都需要安装程序, 所有用户端程序和中心服务器进行信息交互。 这种结构优点是用户端程序一致, 比较方便控制, 服务器端和用户本地的数据很容易进行交互, 通信速度比较快; 缺点是每个用户都需要安装客户端, 比较繁琐, 而且不能很好地跨操作系统平台。
        C / S 结构通常适用于具有固定的用户端或者少量的用户端, 并且是对安全性要求比较高的应用, 如银行信息管理系统、 邮局信息管理系统和飞机票火车票售票系统等。
        传统的 C / S 结构通常使用 PowerBuilder、 Delphi、 Visual Basic、 Visual C + + 、 JBuilder
作为开发环境, 使用 SQL Server、 Oracle 或者 DB2 作为数据库支持。 随着时间的发展, 版本的更新, 主流的 C / S 开发环境开始向 . NET 和 Java 两大主流体系转变, 目前大部分 C / S 结
构应用都使用 VB. NET、 VC#. NET 以及 Java 开发。 其中, VB. NET 和 VC#. NET 只是描述的
语言不一样, 设计思想和开发环境全部一样, 因此只要掌握其中一个, 就可以满足开发要求了。 VB. NET 是从 Visual Basic 发展而来的, Visual Basic 曾经拥有开发领域世界第一的程序员数量, 因此非常多的 C / S 应用采用 VB. NET 开发环境。

2. 1. 2 B / S 结构编程体系

        B / S 结构编程语言分成浏览器端编程语言和服务器端编程语言。 浏览器端包括超文本标
记语言 (Hypertext Markup Language, HTML)、 层叠样式表单 (Cascading Style Sheets, CSS)、JavaScript 语言和 VBScript 语言。
        所谓浏览器端编程语言就是这些语言都是被浏览器解释执行的。 HTML 和 CSS 是由浏览
器解释的, JavaScript 语言和 VBScript 语言也是在浏览器上执行的。
        为了实现一些复杂的操作, 如连接数据库、 操作文件等, 需要使用服务器端编程语言,
目前主要是 3P (ASP. NET、 JSP 和 PHP) 技术。 ASP. NET 是美国微软公司推出的, 在这三
种语言中是用得最为广泛的。 JSP 是 SUN 公司推出的 J2EE (Java 2 Enterprise Edition, Java2
企业版) 核心技术中重要的一种。 PHP 在 1999 年的下半年和 2000 年用得非常广泛, 因为Linux + PHP + MySQL (一种中小型数据库管理系统) 构成全免费的而且非常稳定的应用平台。 这三种语言是目前应用开发体系的主流。

        数据库支持是必需的, 目前应用领域的数据库系统全部采用关系型数据库 ( Relation
Database Management System, RDBMS)。 在企业级的开发领域中, 主要采用三大厂商的关系数据库系统: 美国微软公司的 SQL Server、 美国 Oracle 公司的 Oracle 和美国 IBM 公司的 DB2。

2. 2 企业应用开发架构

        在构建企业级应用时, 通常需要大量的代码, 而且这些代码一般分布在不同的计算机上, 划分代码运行在不同计算机上的理论就是多层设计理论。 企业级应用系统通常分为两层、 三层和 N 层架构。

2. 2. 1 两层架构

        传统的两层应用包括用户接口和后台程序,后台程序通常是一个数据库, 用户接口直接同
数据库进行对话。 实现上, 通常使用 JSP、 ASP或者 VB 等技术编写这类软件, 结构如图 2-2
所示。两层应用架构显示逻辑层一般由 HTML、JSP、 ASP 实现, 通过 JSP 和 ASP 直接和数据库相连。

2. 2. 2 三层架构

        在两层应用中, 应用程序直接同数据库进行对话。 三层结构在用户接口代码和数据库中间加入了一个附加的逻辑层, 通常这个层叫做 “商务逻辑层”, 如图 2-3 所示。

2. 2. 3 N 层架构

        如果某个应用超过 3 个独立的代码层, 那么这个应用叫做 N 层应用, 而不再叫四层或者五层等名称, 而是统称为 N 层, 如图 2-4 所示。

2. 2. 4 开发架构比较

        两层架构的优点是开发过程比较简单, 利用服务器端的程序直接访问数据库, 部署起来比较方便。 缺点是程序代码维护起来比较困难, 程序执行的效率比较低, 用户容量比较少。三层架构基本解决了两层架构的缺点, 将显示部分和逻辑流程控制分开, 利用服务器应用程序实现显示部分, 利用商务逻辑层实现程序的流程控制, 分层使维护变的方便一些, 而且执行效率也会有所提高, 但是相对部署起来就比较困难一些。
        根据实际需要, 会进一步细化每一层, 或者添加一些层, 就形成了 N 层架构。 它与三层架构一样, 组件化的设计使维护相对容易, 但是部署相对困难。

2. 3 JSP 概述

        JSP (Java Server Pages) 是由美国 Sun Microsystems 公司倡导的、 许多公司参与一起建
立的一种动态网页技术标准。 JSP 技术是用 Java 语言作为脚本语言, JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于 HTTP 的应用程序。
        在传统的网页 HTML 文件 (∗ . htm, ∗ . html) 中加入 Java 程序片段 (Scriptlet) 和 JSP
标记 (Tag), 就构成了 JSP 网页 (∗ . jsp)。 Web 服务器在遇到访问 JSP 网页的请求时, 首
先执行其中的程序片段, 然后将执行结果以 HTML 格式返回给客户。 程序片段可以操作数据库、 重新定向网页以及发送 e - mail 等, 这就是建立动态网站所需要的功能。 所有程序操作都在服务器端执行, 网络上传送给客户端的仅是得到的结果。 它对客户浏览器的要求最低, 可以实现无 Plugin, 无 ActiveX, 无 Java Applet, 甚至无 Frame。

2. 3. 1 什么是 JSP

        JSP 是基于 Java 的技术, 用于创建可支持跨平台及 Web 服务器的动态网页。 从构成情况上来看, JSP 页面代码一般由普通的 HTML 语句和特殊的基于 Java 语言的嵌入标记组成,所以它具有了 Web 和 Java 功能的双重特性。
        JSP 1. 0 规范是 1999 年 9 月推出的, 12 月又推出了 1. 1 规范。 此后 JSP 又经历了几个版本, 2003 年发布的 JSP 2. 0, 最新版本是 JSP 2. 1。 本书介绍的技术都基于 JSP 2. 0 规范。
        为了让读者对 JSP 技术有一个直观的认识, 先来看一个非常简单的 JSP 页面及其运行效果。 以下是 helloWorld. jsp 的源代码:

< % @ page language = " java" contentType = " text / html; charset = gbk" % >
< html >
< head >
< title > Hello World! < / title >
< / head >
< body bgcolor = " #FFFFFF" >
< h3 >
< %
out. println(" JSP Hello World!" );
% >
< / h3 >
< / body >
< / html >

        JSP 是一种动态网页技术标准。 可以将网页中的动态部分和静态的 HTML 相分离。 用户
可以使用平常得心应手的工具并按照平常的方式来书写 HTML 语句。 然后, 将动态部分用特殊的标记嵌入即可, 这些标记常常以 “ < % ” 开始并以 “% > ” 结束。 程序运行效果如图 2-5 所示。
        同 HTML 以及 ASP 等语言相比, JSP 虽然在表现形式上同它们的差别并不大, 但是它却
提供了一种更为简便、 有效的动态网页编写手段, 而且由于 JSP 程序同 Java 语言有着天然的联系, 所以在众多基于 Web 的架构中, 都可以看到 JSP 程序。
        由于 JSP 程序增强了 Web 页面程序的独立性、 兼容性和可重用性, 所以, 与传统的
ASP、 PHP 网络编程语言相比, 它具有以下特点:
        1) JSP 的执行效率比较高。 由于每个基于 JSP 的页面都被 Java 虚拟机事先解析成一个
Servlet, 服务器通过网络接收到来自客户端 HTTP 的请求后, Java 虚拟机解析产生的 Servlet
将开启一个 “线程 (Thread)” 来提供服务, 并在服务处理结束后自动销毁这个线程, 如图
2-6 所示。 这样的处理方式将大大提高系统的利用率, 并能有效地降低系统的负载。
        2) 编写简单。 由于 JSP 是基于 Java 语言和 HTML 元素的一项技术, 所以只要熟悉 Java
和 HTML 的程序员都可以开发 JSP。
        3) 跨平台。 由于 JSP 运行在 Java 虚拟机之上, 所以它可以借助于 Java 本身的跨平台能
力, 在任何支持 Java 的平台和操作系统上运行。
        4) JSP 可以嵌套在 HTML 或 XML 网页中。 这样不仅可以降低程序员开发页面显示逻辑效果的工作量, 更能提供一种比较轻便的方式来同其他 Web 程序交互。

2. 3. 2 JSP 技术原理

        JSP 文件的执行方式是 “编译式”, 而不是 “解释式”, 即在执行 JSP 页面时, 是把 JSP
文件先翻译为 Servlet 形式的 Java 类型的字节码文件, 然后通过 Java 虚拟机来运行。 所以从
本质上来讲, 运行 JSP 文件最终还是要通过 Java 虚拟机。 不过根据 JSP 技术的相关规范,
JSP 语言必须在某个构建于 Java 虚拟机之上的特殊环境中运行, 这个特殊环境就是 Servlet
Container (通常被译为 Servlet 容器)。 而且, 每个 JSP 页面在被系统调用之前, 必须先被Servlet 容器解析成一个 Servlet 文件。图 2-7 给出了 JSP 的运行原理。 每次 Servlet 容器接收到一个 JSP 请求时, 都会遵循以下步骤:
        (1) Servlet 容器查询所需要加载的 JSP 文件是否已经被解析成 Servlet 文件。 如果没有在 Servlet容器里找到对应的 Servlet 文件, 容器将根据 JSP 文件新创建一个 Servlet 文件。 反之, 如果在容器里有此 Servlet 文件, 容器则比较两者的时间, 如果JSP 文件的时间要晚于 Servlet 文件, 则说明此 JSP文件已被重新修改过, 需要容器重新生成 Servlet文件, 反之容器将使用原先的 Servlet 文件。

        (2) 容器编译好的 Servlet 文件被加载到 Servlet 容器中, 执行定义在该 JSP 文件里的各项操作。
        (3) Servlet 容器生成响应结果, 并返回给客户端。
        (4) JSP 文件结束运行。从这个 JSP 的工作原理和运作流程上来看,JSP 程序既能以 Java 语言的方式处理 Web 程序里的业务逻辑, 更可以处理基于 HTML 协议的请求, 它是集众多功能于一身的。

        不过, 在编写程序的过程中, 不能过多地在 JSP 代码里混杂提供显示功能和提供业务逻辑的代码, 而是要把 JSP 程序定位到 “管理显示逻辑” 的角色上。
        当服务器第一次接收到对某个页面的请求时, JSP 引擎就开始进行上述的处理过程, 将被请求的 JSP 文件编译成 Class 文件。 在后续对该页面再次进行请求时, 若页面没有进行任何改动,服务器只需直接调用 Class 文件执行即可。 所以当某个 JSP 页面第一次被请求时,会有一些迟, 而再次访问时会感觉快了很多。 如果被请求的页面经过修改, 服务器将会重新编译这个文件, 然后执行。

2. 3. 3 JSP 和其他动态网站开发技术

        早期的动态网站开发技术是基于公共网关接口 ( Common Gateway Interface, CGI) 的。
其功能主要是客户端向服务器发送请求, Web 服务器接收到请求后启动所指定的 CGI 程序来完成诸如对数据库进行访问、 存储信息等操作, 最后将处理的结果反馈给客户端。 CGI 程序包括两个主要部分: 一个是程序代码, 一个是 HTML 代码。 由于每次修改 HTML 页面代码都必须重新编译 CGI 程序, 以至于最后在 CGI 程序调试中, 调试 HTML 代码的工作量可能超过调试 CGI 程序代码的工作量。 CGI 属于比较早期的服务器端动态技术, 但由于其发展的历史较早, 目前使用此项技术所构建的网站依然不在少数。 然而由于其不易学习和效率不高的特性, 在 ASP 及 JSP 等技术出现之后, 已逐渐淡出用户的视线。
        为克服这一弊端, 其他动态网站开发技术相继发展起来。 ASP (Active Server Pages) 是
美国微软公司开发的一种类似 HTML、 Script (脚本) 与 CGI 的结合体的技术, 可以结合HTML 网页、 ASP 指令和 ActiveX 元件建立动态、 交互且高效的 Web 服务器应用程序。 ASP允许用户使用包括 VBScript 和 JavaScript 等在内的许多已有的脚本语言编写 ASP 应用程序。ASP 程序的编制比 HTML 更方便且更有灵活性。 它是在 Web 服务器端运行, 运行后再将运行结果以 HTML 格式传送至客户端的浏览器。 但是 ASP 技术有一个比较明显的缺陷就是它基本上只能局限于美国微软公司的操作系统平台之上, 如 IIS ( Internet Information Server)和 PWS (Personal Web Server) 等。

        PHP 也是一种用于创建动态 Web 页面的服务端脚本语言。 同样可以混合使用 PHP 和
HTML 编写 Web 页面。 当客户端访问某页面时, 服务器端会首先对页面中的 PHP 命令进行
处理, 然后把处理后的结果连同 HTML 内容一起传送到客户端的浏览器。 另外, PHP 是一
种开源程序, 拥有很好的跨平台兼容性。 用户可以在 Windows 系统及许多版本的 UNIX 和
Linux 系统上运行 PHP, 而且可以将 PHP 作为 Apache 服务器的内置模块或 CGI 程序运行。
ASP. NET 是美国微软公司集成 . NET 平台发展而来的服务器端网页语言, 使用 . NET 提供的
类别库与对象导向理论建构的服务器端动态网页, 不仅功能强大, 紧密结合 . NET 平台, 而
且在性能上也有相当出色的表现, 近年来已经成为最热门的动态网页技术之一。
        JSP 不像 CGI、 ISAPI 和 NSAPI 那样难于编写和维护, 不像 PHP 那样只能适应中小流量
的网站, 也不像 ASP 那样受到跨平台的限制 (只能运行于美国微软公司开发的 IIS 和 PWS
上)。 JSP 体现了当今最先进的网站开发思想, 和其他 Web 开发工具相比, JSP 有着以下强
大的优势:
        1) 程序可以跨平台执行。 JSP 可以让开发人员在任意环境中进行开发, 在任意环境中
进行系统部署, 在任意环境中扩展应用程序。
        2) 多样化和功能强大的开发工具支持。 Java 有许多非常优秀的开发工具, 而且有许多
可以免费得到, 其中许多工具已经可以顺利地运行于多种平台之下。
        3) 强大的可伸缩性。 从只有一个小的 jar 文件就可以运行 servlet / jsp 到由多台服务器进
行集群和负载均衡, 到多台 Application 进行事务处理, 一台服务器到无数台服务器, Java 显
示了巨大的生命力。
        当然, JSP 也有它的不足, Java 的一些优势也是它致命的问题所在:
        1) 跨平台的功能和极度的伸缩能力极大地增加了产品的复杂性。 也就是说, 它在扩展
时需要分成多少块, 那么 Java 系统中就有多少种产品, 所以用户可能会看到 jre、 jdk、 jsdk、
jswdk 等, 而实际上它们是密不可分的。 只要将它们有效地搭配在一起, 就可以产生强大的
效能。 当然, 这同时也使应用程序变得非常复杂。
        2) JSP 运行是用 class 常驻内存来完成的, 虽然提高了响应速度, 但要占用内存。 Java
的运行速度是用 class 常驻内存来完成的, 所以它在一些情况下所使用的内存比起用户数量来说确实是 “最低性能价格比” 了。 从另一方面, 它还需要硬盘空间来储存一系列的 . java文件和 . class 文件, 以及对应的版本文件。
        3) JSP 程序调试也不是很方便。 JSP 页面首先被转化为一个 . java 文件 (Servlet), 然后再被编译。 这样, 出错信息实际上指向的是经过转化的那个 . java 文件而不是 . jsp 本身。

猜你喜欢

转载自blog.csdn.net/qq_43416206/article/details/135329511
今日推荐