【Jsp精品源码栏目提醒】:网学会员,鉴于大家对Jsp精品源码十分关注,论文会员在此为大家搜集整理了“【精品】jsp第一部分 - 其它资料”一文,供大家参考学习!
第一部分
JSP 基础 第1章
JSP 概述 在 Internet 飞速发展的今天,Java 以其简单易用、完全的面向对象、平台无关性和安全可靠而成为网络编程的首选语言。
继又推出 Java Servlet,为 Java 技术增添了一名新成员,从而使 Java 成为开发 Web 服务器的强大工具。
JSPJava Server Pages则是由 Sun Microsystem 公司于 1999/6 推出的最新技术,是基于Java Servlet 以及整个 java 体系的 Web 开发技术,是 Servlet2.1 API 的扩展。
利用这一技术可以建立先进、安全和跨平台的动态网站。
有理由相信,Java 技术必将在 Web 开发以及电子商务建设中发挥越来越重要的作用。
本章主要从以下几个方面介绍 Java 技术 Java Servlet和
JSP: Java 技术的发展 Java Servlet Java Servlet 与其他 Web 开发工具的比较 Java Servlet 的特点 Java Server Page 的优点 1.1 Java 技术的发展 Java 技术是由美国 Sun 公司倡导和推出的,Java 技术包括 Java 语言和 Java Media APIs、Security APIs、Management APIs、Java Applet、Java RMI 、JavaBeans、JavaOS、Java Servlet、Java Server Pages 以及 JDBC 等,现把 Java 技术的发展简述如下。
1990 年,Sun 的 James Gosling 领导的小组设计了一种平台独立的语言 Oak,主要 用于为各种家用电器编写程序。
1995 年 1 月,Oak 被改名为 Java ,并 1995 年 5 月 23 日, Sun 在 Sun World 95 上正式发布 Java 和 HotJava 浏览器。
1995 年 8 月至 12 月,Netscape 公司、Oracle 公司、Borland 公司、SGI 公司、Adobe 公司、IBM 公司、ATampT 公司、Intel 公司获得 Java 许可证。
1996 年 1 月,Sun 宣布成立新的业务部门——JavaSoft 部以开发、销售并支持基 于 Java 技术的产品 由 Alan Baratz 任总裁。
同时推出 Java 开发工具包 JDKJava Development Kit 1.0为开发人员提供用来编制 Java 应用软件所需的工具。
1996 年 2 月,Sun 发布 Java 芯片系列包括 picoJava、MicroJava 和 UltraJava。
并 推出 Java 数据库联接 JDBC Java Database Connectivity。
1996 年 3 月,Sun 推出 Java WorkShop。
1996 年 4 月,Macrosoft 公司、SCO 公司、苹果电脑公司Apple、NEC 公司等获 得 Java 许可证。
Sun 宣布苹果电脑、HP、日立、IBM、微软、Novell、SGI、SCO、 Tamdem 等公司将把 Java 平台嵌入到其操作系统中。
1996 年 5 月,HP 公司、Sybase 公司获得 Java 许可证。
北方电讯公司宣布把 Java 技术和 Java 微处理器应用到其下一代电话机中的计划。
月 29 日Sun 在旧金山举 5 行第一届 JavaOne 世界 Java 开发者大会业界人士踊跃参加。
Sun 在大会上推出一 系列 Java 平台新技术。
1996 年 8 月 ,Java WorkShop 成为 Sun 通过互联网提供的第一个产品。
1996 年 9 月 ,Addison-Wesley 和 Sun 推出 Java 虚拟机规范和 Java 类库。
1996 年 10 月 ,德州仪器等公司获得 Java 许可证。
Sun 提前完成 JavaBeans 规范 并发布。
发布第一个 Java JITJust-In-Time编译器并打算在 Java WorkShop 和 Solaris 操作系统中加入 JIT。
月 29 日Sun 发布 Java 企业计算技术包括:JavaStation 10 网络计算机、65 家公司发布的 85 个 Java 产品和应用、7 个新的 Java 培训课程和 Java 咨询服务、基于 Java 的 Solstice 互联网邮件软件、新的 Java 开发者支持服务、 演示 HotJava Views、 完 Java Tutor、成 Java Card API 等。
Sun 宣布完成 Java Card API 规范这是智能卡使用的第一个开放 API。
Java Card 规范将把 Java 能力赋予全世界 亿万张智能卡。
1996 年 11 月,IBM 公司获得 JavaOS 和 HotJava 许可证。
Novell 公司获得 Java WorkShop 许可证。
Sun 和 IBM 宣布双方就提供 Java 化的商业解决方案达成一项 广泛协议IBM 同意建立第一个 Java 检验中心。
1996 年 12 月,Xerox 等公司获得 Java 或 JavaOS 许可证。
Sun 发布 JDK 1.1、Java 商贸工具包、JavaBeans 开发包及一系列 Java APIs。
推出一个新的 Java Server 产 品系列其中包括 Java Web Server、Java NC Server 和 Java Server Toolkit。
Sun 发 布 100纯 Java 计划得到百家公司的支持。
1997 年 1 月,SAS 等公司获得 Java 许可证。
Sun 交付完善的 JavaBeans 开发包 这是在确定其规范后不到 8 个月内完成的。
1997 年 2 月,Sun 和 ARM 公司宣布同意使 JavaOS 能运行在 ARM 公司的 RISC 处理器架构上。
Informix 公司宣布在其 Universal Server 和其他数据库产品上支持 JDK 1.1。
Netscape 公司宣布其 Netscape Communicator 支持所有 Java 化的应用软 件和核心 APIs。
1997 年 3 月,HP 公司获得 Java WorkShop 许可证用于 HP-UX 操作系统。
西 门子 AG 公司等获得 Java 许可证。
日立半导体公司、Informix 公司等获得 JavaOS 许可证。
Novell 公司获得 Java Studio 许可证。
Sun 发售 JavaOS 1.0 操作系统这是 一种在微处理器上运行 Java 环境的最小、最快的方法 提供给 Sun 的 JavaOS 许可 证持有者使用。
Sun 发售 HotJava Browser 1.0这是一种 Java 浏览环境可以方便地 按剪裁来编制专用的信息应用软件如客户自助台和打上公司牌号的网络应用软 件。
Sun 推出 JDK 1.1.1。
1999 年 6 月,Sun 发布 JDK 1.3 和 Java Web Server2.0。
1.2 Java Servlet Java Servlet 是一组运行在服务器端的软件。
Sun 公司将其取名为 Java Servlet,可能是与 Applet 有关。
Applet 是运行在 Web 浏览器端的 Java 程序,Java Servlet 则是运行在 Web服务器端的 Java 程序。
用户可以在 Web 浏览器端通过 URL 来调用运行在 Web 服务器端的Java 。
Java Servlet 程序完成所需要的工作,如使用这样一个网址 http://myhost/servlet/mytest,就能调用 Web 服务器 servlet 目录下一个名为 Mytest 的 Java Servlet 程序。
在使用 Java Servlet以后,用户不必再使用效率低下的 CGI 方式,也不必使用只能在某个固定 Web 服务器平台运行的 API 方式来动态生成 Web 页面。
由于现在绝大多数的 Web 服务器都支持 Java Servlet接口,并且编写 Java Servlet 程序的语言是与平台无关的 Java 语言,因此 Java Servlet 也是与平台无关的;由于 Java Servlet 内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此 Java Servlet 效率非常高。
servlet 程序是使用 Sun 公司提供的 Java Servlet API 开发包开发的,这个开发包并没有包含在标准的 JDK 开发包中,需要另外获取。
Java Servlet API 中包含了 servlet 接口,所有Java Servlet 程序都必须实现这个接口。
在这个接口中必须提供管理 Java Servlet 和与客户端进行通信的方法,程序员在开发 Java Servlet 程序时应当提供部分或全部的方法。
Web 服务器程序在收到客户端的请求后负责加载或运行 Java Servlet 程序,在不需要这些程序时可以将它们卸载掉。
因此,每个 Java Servlet 程序都有一定生命周期。
当服务器程序加载一个 Java Servlet 程序时,它运行 servlet 的 Init 方法。
虽然大多数的 Java Servlet 程序可以多线程的方式运行,但它只需要加载一次。
当 Java Servlet 被加载和初始化后,它就可以执行 Service 方法来处理客户端的请求了。
在处理客户请求时需要使用 servletRequest和 servletResponse 两个对象,前者负责从客户端传来的参数,后者负责将处理的结果返回客户端。
一个 Java Servlet 可以同时处理多个客户的请求,每个 Service 方法都运行在一个线程中。
当服务器程序不需要某个 Java Servlet 程序时,可以用 Destory 方法将其卸载掉。
使用 JavaServlet 在多层结构应用软件体系结构中编写服务器层的应用服务程序具有许 在 (多优点。
JavaServlet 和 Java Web Server Sun 提供的由 Java 语言编写的 Web 服务器软件,简称为 JWS)配合时,系统会自动处理线程和会话信息,并且能够提供很好的安全机制。
这样程序员不必自行编写处理安全、RMI 对象注册等代码,从而集中精力关注与特定应用有关的功能。
如果在客户端使用 Applet 程序,在服务器端使用 Java Servlet 程序,那么整个系统就能极好地无缝结合,提供一个高可靠性和良好线程性能的系统。
由于 Java Servlet 程 所以在 Java Servlet 程序中可以使用其他的 Java 技术,序是由 Java 语言编写的, 如使用 JDBC访问数据库,使用 RMI 与其他程序通信等,从而编写出能够适合大型系统完成复杂功能的模块。
Java Servlet 非常适合在多层结构应用软件体系结构中编写中间层的应用服务程序,这使得引入 JWS 与 Java Servlet 技术的多层结构应用软件体系结构与以前的三层结构相比有了重大的进步。
1.3 Java Server Pages 我们知道,要制作动态内容必须包含一些形式的嵌入程序。
于是如何优化系统,用最小的投入获得最大的收益就变得得尤为重要。
Sun 强大属性的服务器 Java 平台,基于 Java模板系统
JSP 是您理想的选择。
JSP 是一种混合模板系统,它支持两种方式动态网页。
像 ASP、SSJS 和 PHP 一样,脚本可以包含实际编程代码嵌入
JSP。
像 ColdFusion 一样,
JSP 支持一组 HTML 样的标签集,与服务器用 Java 对象交互,并不需在页面上显示源代码。
事实上,
JSP 1.1 使这个能更进一步,它通过一个标签扩展技巧使得开发者建立定制标签库并载入
JSP 页,这些定制的标签会和标准
JSP 标签一样在页上使用。
Servlets 和
JSP 作为 Sun 的 Java Web Server 产品刚一出现, 一个 HTTP 服务器端便作成了。
Sun 最终把 servlet 技术作标准 Java 扩展发表。
1998 年 API 草稿发表,1999 年 6 月,
JSP1.0 版发表。
作为性能强大的网站和基于 Web 的应用中不可缺少的元件,生成动态网页一直是 Web开发界关注的焦点。
JSP 在 Web 技术中正扮演着这种主要的角色,我们正期待着基于
JSP的新一代在线工具,服务于更新的产品。
JSP 和 Java 2 企业版
JSP 是基于 Java 的开发 web 应用的集成部分,因为它通过使用脚本元件和面向对象的组件组合成标准标识文本来把表示从实现逻辑当中分离,
JSP 提供了一个非常精彩的 web分离前端技术。
1999 年 6 月,Sun 公司宣布 Java 2 软件平台将分成 3 个版本,分别对应不同的硬件平台。
传统 JRE(Java Runtime Environment)包括核心类(如标准网络功能,图形用户接口)已经被命名为 J2SE (Java 2 Standard Edition)专门面向传统的桌面平台如 Microsoft Windows和 Apple Macintoch 个人计算机。
而核心类的一个面向手持设备、嵌入处理器和称为“信息应用设备” (如机顶盒)的子集组成了 J2ME(Java 2 Micro Edition) 。
而 Java 2 企业版 J2EE(Java 2 Enterprise Edition)正与次相反。
它不但没减少核心类,还增加了一个开发企业应用的绑定。
1.4 Web 开发工具简介 目前用于开发 Web 应用的工具很多,例如 CGI、FastCGI、ISAPI、NSAPI、ASP 等,下面分别介绍这些工具的基本原理。
CGI CGI(Common Gateway Interface),即通用网关接口,它是第一个用于建立动态 Web页的实用技术。
使用 CGI,服务器可以调用某一程序来响应客户的请求,这样就实现了动态页面。
但是,CGI 的效率是比较低的,因为当服务器接受到一个要访问 CGI 程序的请求后,必须要为每个 CGI 请求建立一个进程,所以造成服务器效率低下。
FastCGI 由于 CGI 的效率比较低,所以人们使用了另一种方式来代替传统的 CGI,这种方式称为 FastCGI。
FastCGI 改进了传统的 CGI 要为每个 CGI 请求建立一个进程的方式,而改为每个 CGI 程序建立一个进程,这样,当多个请求同时调用相同的进程时,就可以节省服务器的资源,但是这种改进仍然是局部的。
ISAPI 与 NSAPI 一些公司专门为本公司的 Web 服务器开发了专业的接口,如 Macrosoft 的 ISAPI 以及Netscape 的 NSAPI。
使用这些接口,用户可以开发出用于增强相应服务器性能的代码,从而扩展服务器的能力。
但是 ISAPI 与 NSAPI 的代码维护起来比较困难,并且安全性和可靠性很差,因此不是建立动态 Web 页的理想工具。
ASP ,是 ASP(Active Server Page) 由 Macrosoft 公司开发的用于制作动态 Web 网页的技术。
它的核心是在 HTML 嵌入某些代码,如 VBScript 或 JScript,这些代码由服务器执行,并把执行结果返回给客户端。
ASP 技术是生成小网页的最佳工具,但是在生成较大的网页时,速度较慢。
Serve-Side Java Script Serve-Side Java Script(SSJS)是用于服务器端的 Java script 的脚本语言。
它是面向对象的(基于模型而不是类)语法与 C 类似的语言。
尽管名字接近,但它不是 Java 语言。
SSJS是 Java Script 核心扩展,它的基本组成部分也用于客户端。
SSJS 增添了一些内部属性,包括支持数据库、电子邮件、对话管理,它还通过使用 Netscape 的 Live Wire 技术实现与服务器端 Java 类的互通。
与其它用于开发动态网页系统不同的是,SSJS 是一种被编译语言。
象Java 一样,SSJS 不依赖特定的硬件或操作系统,但它却依赖于 Netscape 的 HTTP 服务器。
PHP PHP 原本是 Personal Home Page tools 的缩写(个人主页开发工具),而今它也有了很大发展。
像 JavaScript,PHP 也使用类似 C 的语法结构,为模式匹配和数据库访问提供强大支持。
扩展的 PHP 能与其它网络资源如邮件和目录服务器进行通讯。
与其它动态制作系统不同,PHP 是 OS 产品(开放资源) ,像其它 OS 产品,如 Linux Apache HTTP 服务器一样,PHP 非商业产品,它最大的特点是支持多平台,PHP 与 Windows NT,好几种 UNIX 系统兼容,还包括一定数量的 HTTP 服务器,如 Apache、IIS、Netscape Enterprise Server。
1.5 Java Servlet 的特点 由上述内容可见,以上技术或工具的使用都有一定的局限性,而 Java Servlet 之所以能够迅速成为理想的动态 web 页工具的原因,在于 Java 语言的机制,特别是 Java 的平台无关性和安全性,下面具体介绍 Java Servlet 的特点。
可移植性好 因为 Java Servlet 是用 Java 写的,所以它同样具有平台无关性。
性能强大 Java Servlet 可以使用 Java 的所有性能,例如网络操作、多线程、数据库操作、CORBA控件连接等。
执行效率高 由于系统为每个 Java Servlet 保留一个对象实例,因此能够保证服务器的开销最小。
安全性好 Java Servlet 可以充分利用 Java 的安全性机制,且可以实现类型的安全性。
1.6
JSP 的优点
JSP 的优点很多,首先它是一个基于 Java 的技术,它拥有 Java 在开发和移植方面的优势。
由于面向对象,所以它有很强的键入、封装、异常处理、自动存储管理能力;使用 Java使得它代码更强大,编程更高效。
由于
JSP 发表了标准的 API,并且编译的 Java 字节码便携于所有支持 JVM 的平台;所以使用
JSP 不依赖于特定硬件平台、操作系统或服务器软件,
JSP 网页及相关 Java 类都可以方便的移植。
JSP 是属中性厂家,开发和系统设计者可作出各种优越的集成方案。
由于
JSP 支持 Java 平台完全访问,所以它可以不断的从所有其它标准 Java APIS 中获得优势。
包括那些跨平台的数据库访问、目录服务、分布式计算和加密。
这种对数据源、系统资源和网络服务强大的驾驭能力使得
JSP 能更灵活有效的开发 Web 应用。
JSP 在优越于 CGI 性能上设计了编程模板来加强中央组件的应用, 这使得
JSP 将应用程序逻辑和页面显示分离。
1.性能 当服务器通过 CGI 接收到一个请求, 传统 CGI 代码是作为 HTTP 服务器外部程序存在的,便产生一个进程执行 CGI 代码,这对于 Web 服务器处理起来倒是简单,可对于多路同时到达的请求,分配进程将会非常昂贵。
存储器及系统资源定位,数据及程序代码加载。
一旦进程被破坏,资源就被空耗了。
JSP 是通过 Servlets 来实现的,当 Web 服务器接收到一个请求,便产生一个专用进程来执行 Servlet 称为 Servlet Container。
JSP 环境里也称
JSP Container 。
这 个 Servlet container 通 常 是 一 个 从 HTTP 服 务 器 分 离 出 来 的 进 程 。
Servletcontainer 与传统的 HTTP 服务器相关联,只有一个附加的进程处理所有 Servlet 相关的请求包括
JSP。
这个进程在 HTTP Server 启动时被初始化直到 HTTP Server 关闭。
当 Servlet或
JSP 同时接收到多个请求时会怎样处理呢?它是通过 Java 线程来完成的。
线程和进程相似,它可以在一个 JVM 里并行运行。
由于他们占用较少的资源,它们比进程更有效。
为了取得更强大的性能,一部分 Servlet container 运行“内部进程” (in process) ,作为 HTTP 服务器自身的一部分,甚至对非 Java 编写的 HTTP Server。
这使得 Sereletcontainer 与 HTTP Server 之间请求与响应之间的通讯更有效,它是通 Servlet container作为一个线程在 HTTP Server 内运行实现的。
由于所有 Servlet 和
JSP 请求可用一个进程处理,它们可以非常容易的分享资源,使得性能又进一步的提高了。
当采用传统的 CGI 时,由于 CGI 为每个请求启动一个进程,每个 CGI 请求必须专门打开连接,直到请求结束才关闭连接,这使得分享资源变得很困难。
而 Servlet Container 通过在启动时建立一个连接组合,在请求线程中分享这些连接,从而避免了附加开销。
这种使用一个总是处于打开状态的可复用的数据库连接组合的技术,大大加快了数据库访问的速度。
Java 类文件是被编译成独立于平台的字节码,而不是原始汇编代码;JVM 的工作就是在运行时将这种字节码翻译成本地平台指令。
于是这种外层译码需要运行 Java 代码,使得Java 运行比等价的以其它语言编写并编译成原始代码要慢(如 C 或 C) 。
从这点来看,选择 Java 不是十分理想。
总体来看,动态网页生成系统如今主要依赖解释的脚本语言。
CGI 编程 Perl,ASP 和PHP 也是靠解释的脚本语言,SSJS 和 Cold Fusion 莫不如此,而
JSP 依靠基础的解释器,所以从这一点来看性能并没有受到打击,而且 Java 作为目前非常流行的语言,很多技术都提高它的性能。
同时一些硬件和操作系统厂商也在不断提高 JVM 的性能,在各种 Java 基准码方面赢得了很高的荣誉,
JSP 的性能也随之在不断的提高。
太阳微系统和所有其它
JSP 和Servlet 厂商都在为提高
JSP API 的基本性能做着不懈的努力。
2.可复用的组件
JSP 常驻服务器端有类似于 HTML 的标签集。
它是用来建立、询问和修改服务器端JavaBeans 的。
JavaBean 是 Java 编写的对象,为了加强程序的模块性和可复用性,Java Beans 通过对相关数据、函数、状态封装成程序块,供多重上下文使用或复用。
Java Beans 可以被不断的连接和组合,达到更高级或特定应用的功能。
微软的 ActiveX 和 CORBA 都是这种即插即用、互操作性的组件。
一个组件可以作另一个编程语言,或是一个可视的工具栏。
JSP 的Java Beans 不是作为编程语言,
JSP 而是一个语法功能。
提供标签在网页上存取 Java Beans,并显示和修改它们的属性(详细的可参阅第 5 章 )。
一般设计组件主要是为了复用,组件的自包含性使得编程人员可以不必弄清对象之间的复杂关系就可以使用它们。
组件一般是为了完成一个特定的任务,如显示一组数据、演示一个特定状态等。
3.分离表示和实现(Separating Presentation and implementation) 由于
JSP 支持 Java Beans,可以严格分离表示(最终用户显示)与实现(在第一位置产生信息的代码) 。
把这两方面去耦的好处是要改变一个不需要询问另一个。
不需要修改Java 代码就可修改数据(如选择字体、改变颜色、改变网页布局) ;只要组件接口不变,就可被重写(有时为了提高性能或可维护性)而不影响
JSP 网页的效果。
JSP 是通过一组简洁的语法(Syntax)来实现这个目的的。
用一组类似 HTML 标签访问JavaBeans .