的操作,比如说用一个方法 来调用 JavaBean,或者包含标准的 Java 代码块(也就是所谓的 scriptlet) ,这些代码块能 够在网页被访问的时候被执行。 为了了解它们如何使用,下面我们介绍了一个 JSP 网页的简单例子,在这个 JSP 网页中 包含了静态 HTML 内容和从 JavaBean 生成的动态数据。当用户访问这个网页的时候,它可以 显示当前的日期,并根据当前的时间增加相应的问候语(例如“早上好”和“下午好”。为 ) 简单起见,JSP 标签显示在块中:
Welcome
Today is
Day:
Year:
早上好
下午好
上面的 JSP 例子是不是很简单?我们在
JSP 网页中使用了几个不同的组件。这些组件包 括下面的内容: JSP action (或 JSP 标签)使用了多种函数并扩展了 JSP 的功能。JSP action 使用的是 一种类似 XML 的语法, 并且被用来处理 JavaBean 组件。 在上面的例子中, jsp:useBean action 初始化了一个 JavaBean ,
JavaBean 将在网页的后面部分被用到:
如果在网页中需要获得和设置这个 Bean 的属性,另一个 JSP action 将被给出,使用的 是下面的语法:
当网页被编译成一个 servlet 的时候, Directive 将被 JSP 引擎处理。 Directive 被用来 设置页面级的指令、 从外部文件插入数据以及制定定制的标签库。 Directive 被定义在之间。 在上面的例子中,Directive 定义了页面所使用的语言(Java),为了关联 Java 类需要植入代 码并指定一个将要插入页面底部的
HTML 文件内容:
声明与 Java 中的变量声明相似, 它也是为了后面表达式或 sc
riptlet 的需要来定义变量。 声明被定义在之间。在上面的例子中, “int”声明并给出了一个当前时间的相应值 (AM 或 PM):
表达式可以是变量或常量,它插在由 web 服务器所返回的数据里,并用来定义。在上面 的例子中,表达式将调用 JavaBean 组件并在页面中插入结果数据:
Scriptlet 将作为一个 Java 代码块植入 JSP 页面中。Scriptlet 代码被一一插入由页面 所产生的 servlet 中,它被定义在之间。上面例子中的 scriptlet 可以根据当前用户产生相 应的时间和问候语:
早上好
下午好
注释部分和 HTML 的注释相似, 当在执行的时候 JSP 引擎将去掉对注释的解释。 这就意味 着 JSP 注释并不返回到用户的浏览器中。不象 HTML 注释被定义在标签之间,JSP 注释被定义 在之间。例如: 使用定制化的标签 尽管你可以在 JSP 页面中植入 Java 代码并在服务器方执行,但是,JSP 也支持使用定制 标签来插入动态内容, 它有一种机制可以让你在 JSP 页面中插入你自己的、 HTML 类似的标 与 签。换句话说,你的 JSP 网页能够使用插入 Java 代码的简单标签语法产生动态的内容。但定 制标签的用处不是很大。 创建一个定制标签比在 JSP 网页中使用简单的 scriptlet 要复杂得多,因为定制标签需 要用几个步骤来把你的 Java 组件和 JSP 代码连接起来。 不过, 定制标签在分发和重复使用的 时候就非常简单了。对定制标签的支持将在 JSP 创建工具中实现。
在下面的例子中产生动态内容的 JSP 网页就使用了定制标签。注意,在这个例子中我们 不再需要引入 Java 类、声明变量或写任何 Java 代码:
Today's Menu
Lunch
Our Special of the Day
从上面的语句中我们可以看出,这个页面明显比前面的 scriptlet 例子要简单许多,因 为它没有包含初始化对象和执行相应的方法。但是 JSP 网页代码仅仅只是一部分;对于每一 个定制标签,还包括下面的三个组件: (1)包含定制标签的网页,比如说,上面的代码片断中就使用了 insertCatchOfDay 的 定制标签。在使用定制标签之前,页面必须指定 Taglib Directive 来提供标签库描述符(对 标签定义)的位置。当执行定制标签的时候,网页还有代表性的定义了一个和多个标签属性 (比如在这个例子中的“meal” )来确定动态内容。 (2)标签库描述符。它是一个定义了定制化标签并把它和 Tag