JSP技术简介

一、 JSP 技术概述

   在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发技术很快引起了人们的关注。 JSP 为创建高度动态的 Web 应用提供了一个独特的开发环境。按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer 、 IIS4.0 在内的 85% 的服务器产品。即使您对 ASP "一往情深",我们认为,关注 JSP 的发展仍旧很有必要。

   ㈠ JSP 与 ASP 的简单比较

   JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。

   ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 Java ,这是两者最明显的区别。此外, ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。

   ㈡运行环境

   Sun 公司的 JSP 主页在 http://www.javasoft.com/products/jsp/index.html ,从这里还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时所必须遵从的一些规则。

   执行 JSP 代码需要在服务器上安装 JSP 引擎。此处我们使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。为便于学习,这个软件包提供了大量可供修改的示例。安装 JSWDK 之后,只需执行 startserver 命令即可启动服务器。在默认配置下服务器在端口 8080 监听,使用 http://localhost:8080 即可打开缺省页面。

   在运行 JSP 示例页面之前,请注意一下安装 JSWDK 的目录,特别是" work "子目录下的内容。执行示例页面时,可以在这里看到 JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 文件(即 Servlet )。 JSWDK 软件包中的示例页面分为两类,它们或者是 JSP 文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 代码处理。与 ASP 一样, JSP 中的 Java 代码均在服务器端执行。因此,在浏览器中使用"查看源文件"菜单是无法看到 JSP 源代码的,只能看到结果 HTML 代码。所有示例的源代码均通过一个单独的" examples "页面提供。

   ㈢ JSP 页面示例

   下面我们分析一个简单的 JSP 页面。您可以在 JSWDK 的 examples 目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为 .jsp 。从下面的代码清单中可以看到, JSP 页面除了比普通 HTML 页面多一些 Java 代码外,两者具有基本相同的结构。 Java 代码是通过 < % 和 %> 符号加入到 HTML 代码中间的,它的主要功能是生成并显示一个从 0 到 9 的字符串。在这个字符串的前面和后面都是一些通过 HTML 代码输出的文本。

  < HTML>
  < HEAD>< TITLE>JSP 页面 < /TITLE>< /HEAD>
  < BODY>
  < %@ page language="java" %>
  < %! String str="0"; %>
  < % for (int i=1; i < 10; i++) {
  str = str + i;
  } %>
  JSP 输出之前。
  < P>
  < %= str %>
  < P>
  JSP 输出之后。
  < /BODY>
  < /HTML>

   这个 JSP 页面可以分成几个部分来分析。

首先是 JSP 指令。它描述的是页面的基本信息,如所使用的语言、是否维持会话状态、是否使用缓冲等。 JSP 指令由 < %@ 开始, %> 结束。在本例中,指令" < %@ page language="java" %> "只简单地定义了本例使用的是 Java 语言(当前,在 JSP 规范中 Java 是唯一被支持的语言)。
接下来的是 JSP 声明。 JSP 声明可以看成是定义类这一层次的变量和方法的地方。 JSP 声明由 < %! 开始, %> 结束。如本例中的" < %! String str="0"; %> "定义了一个字符串变量。在每一项声明的后面都必须有一个分号,就象在普通 Java 类中声明成员变量一样。
位于 < % 和 %> 之间的代码块是描述 JSP 页面处理逻辑的 Java 代码,如本例中的 for 循环所示。
最后,位于 < %= 和 %> 之间的代码称为 JSP 表达式,如本例中的" < %= str %> "所示。 JSP 表达式提供了一种将 JSP 生成的数值嵌入 HTML 页面的简单方法。

   会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题,如使用 Cookies 、隐藏的表单输入域,或直接将状态信息附加到 URL 中。 Java Servlet 提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息。 JSP 也同样支持 Servlet 中的这个概念。

   在 Sun 的 JSP 指南 中可以看到许多有关隐含对象的说明(隐含的含义是,这些对象可以直接引用,不需要显式地声明,也不需要专门的代码创建其实例)。例如 request 对象,它是 HttpServletRequest 的一个子类。该对象包含了所有有关当前浏览器请求的信息,包括 Cookies , HTML 表单变量等等。 session 对象也是这样一个隐含对象。这个对象在第一个 JSP 页面被装载时自动创建,并被关联到 request 对象上。与 ASP 中的会话对象相似, JSP 中的 session 对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。

   为说明 session 对象的具体应用,接下来我们用三个页面模拟一个多页面的 Web 应用。第一个页面( q1.html )仅包含一个要求输入用户名字的 HTML 表单,代码如下:

  < HTML>
  < BODY>
  < FORM METHOD=POST ACTION="q2.jsp">
 请输入您的姓名:
  < INPUT TYPE=TEXT NAME="thename">
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第二个页面是一个 JSP 页面( q2.jsp ),它通过 request 对象提取 q1.html 表单中的 thename 值,将它存储为 name 变量,然后将这个 name 值保存到 session 对象中。 session 对象是一个名字 / 值对的集合,在这里,名字 / 值对中的名字为" thename ",值即为 name 变量的值。由于 session 对象在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。 q2.jsp 的另外一个任务是询问第二个问题。下面是它的代码:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String name=""; %>
  < %
  name = request.getParameter("thename");
  session.putValue("thename", name);
  %>
 您的姓名是: < %= name %>
  < p>
  < FORM METHOD=POST ACTION="q3.jsp">
 您喜欢吃什么 ?
  < INPUT TYPE=TEXT NAME="food">
  < P>
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第三个页面也是一个 JSP 页面( q3.jsp ),主要任务是显示问答结果。它从 session 对象提取 thename 的值并显示它,以此证明虽然该值在第一个页面输入,但通过 session 对象得以保留。 q3.jsp 的另外一个任务是提取在第二个页面中的用户输入并显示它:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String food=""; %>
  < %
  food = request.getParameter("food");
  String name = (String) session.getValue("thename");
  %>
 您的姓名是: < %= name %>
  < P>
 您喜欢吃: < %= food %>
  < /BODY>
  < /HTML>

   JavaBean 是一种基于 Java 的软件组件。 JSP 对于在 Web 应用中集成 JavaBean 组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为 JSP 应用带来了更多的可伸缩性。 JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。如果我们有三个 JavaBean ,它们分别具有显示新闻、股票价格、天气情况的功能,则创建包含所有这三种功能的 Web 页面只需要实例化这三个 Bean ,使用 HTML 表格将它们依次定位就可以了。

   为说明在 JSP 环境下 JavaBean 的应用,我们创建了一个名为 TaxRate 的 Bean 。它有两个属性,即 Product (产品)和 Rate (税率)。两个 set 方法分别用来设置这两个属性,两个 get 方法则用于提取这两个属性。在实际应用中,这种 Bean 一般应当从数据库提取税率值,此处我们简化了这个过程,允许任意设定税率。下面是这个 Bean 的代码清单:

  package tax;
  public class TaxRate {
  String Product;
  double Rate;
  public TaxRate() {
  this.Product = "A001";
  this.Rate = 5;
  }
  public void setProduct (String ProductName) {
  this.Product = ProductName;
  }
  public String getProduct() {
  return (this.Product);
  }
  public void setRate (double rateValue) {
  this.Rate = rateValue;
  }
  public double getRate () {
  return (this.Rate);
  }
  }

   在 JSP 页面中应用上述 Bean 要用到 < jsp:useBean> 标记。依赖于具体使用的 JSP 引擎的不同,在何处配置以及如何配置 Bean 的方法也可能略有不同。本文将这个 Bean 的 .class 文件放在 c:jswdk-1.0examplesWEB-INFjspeans ax 目录下,这里的 tax 是一个专门存放该 Bean 的目录。下面是一个应用上述 Bean 的示例页面:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
  < % taxbean.setProduct("A002");
  taxbean.setRate(17);
  %>
 使用方法 1 : < p>
 产品 : < %= taxbean.getProduct() %> < br>
 税率 : < %= taxbean.getRate() %>
  < p>
  < % taxbean.setProduct("A003");
  taxbean.setRate(3);
  %>
  < b> 使用方法 2 : < /b> < p>
 产品 : < jsp:getProperty name="taxbean" property="Product" />
  < br>
 税率 : < jsp:getProperty name="taxbean" property="Rate" />
  < /BODY>
  < /HTML>

   在 < jsp:useBean> 标记内定义了几个属性,其中 id 是整个 JSP 页面内该 Bean 的标识, scope 属性定义了该 Bean 的生存时间, class 属性说明了该 Bean 的类文件(从包名开始)。

   这个 JSP 页面不仅使用了 Bean 的 set 和 get 方法设置和提取属性值,还用到了提取 Bean 属性值的第二种方法,即使用 < jsp:getProperty> 标记。 < jsp:getProperty> 中的 name 属性即为 < jsp:useBean> 中定义的 Bean 的 id ,它的 property 属性指定的是目标属性的名字。

   事实证明, Java Servlet 是一种开发 Web 应用的理想构架。 JSP 以 Servlet 技术为基础,又在许多方面作了改进。 JSP 页面看起来象普通 HTML 页面,但它允许嵌入执行代码,在这一点上,它和 ASP 技术非常相似。利用跨平台运行的 JavaBean 组件, JSP 为分离处理逻辑与显示样式提供了卓越的解决方案。 JSP 必将成为 ASP 技术的有力竞争者。

(0)

相关推荐

  • JSP技术简介

    一. JSP 技术概述 在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发技术很快引起了人们的关注. JSP 为创建高度动态的 Web 应用提供了一个独特的开发环境.按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer . IIS4.0 在内的 85% 的服务器产品.即使您对 ASP "一往情深",我们认为,关注 JSP 的发展仍旧很有必要. ㈠ JSP 与 ASP 的简单比较 JSP 与 Microsof

  • JSP技术实现RSS订阅功能的示例

    RSS也叫聚合RSS是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication).通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新.同时也是医学.物理学.数学等学科专有名词的英文缩写简称. 最初的RSS要追溯到1995年,当Ramanathan V. Guha和其他在苹果电脑公司的高级技术组开发了一个测试的内容框架.更多有关RSS的资料可查看这里,下面我们来为我们的JSP网站生成RSS. RSS用

  • 一个开发人员眼中的JSP技术(上)

    (作者:天译编译 2000年12月01日 14:26) JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作.本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序). 前言 JavaServer Pages技术可以让web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统.作为JavaTM技术的一部分,JSP能够快速开发出基于web.独立于平台的应用程序.JSP 把用户界面从系统内

  • JSP技术生成动态web页面

    随着WEB技术的发展,WEB内容从一些静态的页到内容丰富的动态页.对于广大WEB开发人员来讲动态页面的生成是一个挑战.有许多的方法来试图解决这个问题,如plug-in技术及基于服务器端的APIs等方法,但存在的一个问题是这些方法是针对某个特定的web服务器,如Microsoft提供的ASP技术就只针对它的IIS及Personal web服务器. 目前用于生成动态网页较为流行的方法有CGI.PHP及JavaServer Page(JSP)技术等.其中:CGI通过访问其它应用程序来获取信息并返回给浏

  • JSP技术实现动态页面到静态页面的方法

    本文是介绍了jsp技术实现动态页面到静态页面的方法,分享给大家,具体如下: 对于JSP技术实现动态页面到静态页面的方案,我们从三个步骤来说明: JSP技术实现动态页面到静态页面的方案第一: 为了能深入浅出的理解这个框架的由来,我们首先来了解一下JSP解析器将我们写的JSP代码转换成的JAVA文件的内容. 下面是一个JSP文件test.jsp ﹤%@ page language=java contentType=text/html;charset=GB2312 %﹥ ﹤% out.write(﹤!

  • 使用JSP技术实现一个简单的在线测试系统的实例详解

    1.登陆界面 实现: 本界面由三部分构成,Footer.jsp,Index.jsp,Header.jsp Header.jsp <center> <h2>在线测试系统</h2> <p> <a href="Index.jsp" rel="external nofollow" >登录</a> | <a href="test.jsp" rel="external n

  • 一个开发人员眼中的JSP技术(下)

    使用定制化的标签 尽管你可以在JSP页面中植入Java代码并在服务器方执行,但是,JSP也支持使用定制标签来插入动态内容,它有一种机制可以让你在JSP页面中插入你自己的.与HTML类似的标签.换句话说,你的JSP网页能够使用插入Java代码的简单标签语法产生动态的内容.但定制标签的用处不是很大. 创建一个定制标签比在JSP网页中使用简单的scriptlet要复杂得多,因为定制标签需要用几个步骤来把你的Java组件和JSP代码连接起来.不过,定制标签在分发和重复使用的时候就非常简单了.对定制标签的

  • 802.1x认证技术简介

    1 背景 以太网的高性价比和媒体的特性使其逐渐成为家庭.企业局域网.电信级城域网的主导接入技术,而且随着10 Gbit/s以太网技术的出现,以太网技术在广域网范围内也将获得一席之地,电信运营商和宽带接入提供商开始提供基于以太或纯以太的接入业务.对于以太网络中多数业务来说,运营商无法从物理上完全控制客户端设备或者媒介.运营商要实现对宽带业务的可运营.可管理,就必须从逻辑上对用户或者用户设备进行控制.该控制过程主要通过对用户和用户设备的认证和授权来实施.一般来说,需要进行认证和授权的业务种类包括:

  • iOS Touch ID指纹识别技术简介

    Touch ID简介: 苹果公司在iPhone 5S手机中推出了指纹识别功能,提高手机安全性的同时也方便了用户操作.其功能是通过Touch ID实现的,从iOS 8系统开始,苹果开发一些Touch ID的API使得开发人员可以在自己的应用程序中调用指纹识别功能. Touch ID功能就是指纹识别密码.使用指纹识别功能需要先进入设置-Touch ID 与密码中根据提示添加指纹. 从iOS 8系统开始开放了Touch ID的验证接口功能,在应用程序中可以判断输入的Touch ID是否设置持有者的To

  • ASP基础入门第一篇(ASP技术简介)

    本文将以如何建立基于IIS 的ASP 动态网站为中心向大家一步一步地揭示动态商业网站设计的真正奥秘.为了使各位能够全面.细致地掌握 ASP 的开发技巧,本文今后将采取连载的形式,手把手地教你如何建立属于自己 ASP 动态网站.由于本文是作者根据自己的学习和实践经验并结合了一些外文资料而写成的,因此不免会有一些偏颇,希望各位见谅. Microsoft Active Server Pages 即我们所称的ASP ,其实是一套微软开发的服务器端脚本环境, ASP 内含于 IIS 3.0 和 4.0 之

随机推荐