Download presentation
Presentation is loading. Please wait.
Published by头 张 Modified 8年之前
1
第二章 JSP 编译指令
2
课程目标 JSP 编译指令 JSP 页面的表达式 JSP 页面的注释 JSP 页面的声明 Scriptlets
3
体验项目 本章程序实现的功能:编写一个学习计划页面,用于 查询一天中相应时间段的学习计划,当点击相应时间段链 接时,在页面下方将出现相应的学习计划。 程序运行过程如下: ( 1 )启动服务器,进入程序的主页面,效果如图所示:
4
当点击 “8 : 30 ~ 10 : 30” 链接时,将显示相应时间段 的计划内容。效果如图所示:
5
什么是 JSP 编译指令 编译指令用于从 JSP 发送信息到容器上,用于设置全局变量、声 明类以及要实现的方法和输出内容的类型等。它们并不向客户端产生 任何输出,所有的指令都只在整个 JSP 页面内有效。指令元素为编译 阶段提供了全局信息。 指令元素的一般格式为: 另外,也可以把同一指令的多个属性结合起来,例如: <%@ directive attribute1="value_1", attribute2="value_2", ……, attributen="value_n" %>
6
page 指令 page 指令用于定义 JSP 页面中的全局属性。 page 指令定义了许多影响页面效果的重要属性。一个 JSP 页面可以包含多个 page 指令,在编译过程中,所有的 page 指令都被抽出来同时应用到一个页面中。除了 import 外,其他 page 指令定义的属性只能出现一次。 page 指令有下列属性:
7
page 指令的属性: language 属性 import 属性 contentType 属性 isThreadSafe 属性 session 属性 buffer 属性 autoFlush 属性 extends 属性 info 属性 errorPage 属性 isErrorPage 属性 pageEncoding 属性
8
include 指令 include 指令通知容器包含当前 JSP 页面中内嵌在指定 位置上的资源内容。被包含的内容可以被 JSP 解析,这种 解析发生在编译期间。 include 指令格式: 其中 file 属性指定要包含的文件名。需要注意的是,一 经编译,内容不可改变,如果要改变 fileName 的内容,必 须重新编译 JSP 文件,但是它的执行效率很高。
9
当使用 include 指令时,这个包含过程是一个静态的过 程。被包含的文件可以是 JSP 文件、 HTML 文件、文本文 件、 inc 文件等。静态包含就是指这个被包含的文件将会 被插入到 JSP 文件中,如果被包含的文件含有可执行的代 码,那么这个包含的文件中的代码就会得到执行。 使用 include 指令,可以对网页进行布局,比如在一个 主页面中可以包含多个小页面。被包含的小页面的位置就 是在主页面中 include 语句出现的位置。
10
taglib 指令 taglib 指令允许页面使用者自定义标签。首先用户要开发标签库,为标 签库编写 “.tld” 配置文件,然后 JSP 页面使用自定义标签。这样,容器使用这 个标签库确定在遇到自定义标签时要怎么做。使用标签,增加了代码的重用 程度,比如可以把一些需要叠代显示的内容做成一个标签,在每次需要叠代 显示时,就使用这个标签。使用标签也使页面易于维护。 在 JSP 规范中,标签库得到了不断的加强,最新的 JSP2.0 规范中增加了 JSTL 标签库。 JSP 标签库在页面里的定义如下: 例如: …… 其中 指令声明此 JSP 文件使用了自定义的标签, uri 用来 表示标签描述符, public 定义了在页面里要引用这个标签时的前缀。
11
一个使用标签的例题 页面程序如下: taglibtest 关于标签的使用,本书会在第 7 章详细介绍
12
脚本元素 JSP 脚本元素是 JSP 代码中使用的最频繁的元素,特别 是 Scriptlets 。脚本元素把 JSP 中所有的一切都集中在一起, 它通常是用 Java 编写的脚本代码。 脚本元素有三种格式: 表达式 声明 Scriptlets
13
表达式 表达式元素表示的是一个在脚本语言中被定义的表达 式,在运行后被自动转化为字符串,然后插入到这个表达 式所在 JSP 文件中的位置。因为表达式的值已经被转化为 字符串,所以能在一行文本中插入这个表达式。 其语法为: 例如:
14
在 JSP 中使用表达式要注意以下几点 不能用一个分号 “ ; ” 作为表达式的结束符。但是同样的表 达式在 “ ” 中就需要以分号来结尾了。 有时表达式也能作为其它 JSP 元素的属性值。一个表达式 能够变得很复杂,它可能由一个或多个表达式组成,表达 式的顺序是从左至右的。
15
声明 声明用来在 JSP 程序中声明变量和方法,可以一次性 声明多个变量和方法,声明语句要使用 “;” 结尾,当然声 明要符合 Java 编程规范。 其语法为: 例如:
16
当声明方法或变量时,需要注意以下规则 变量声明必须以 “;” 结尾 (Scriptlets 有同样的规则,但是表达 式就不同了 ) 。 可以直接使用在 中被包含进来的已经声明的 变量和方法,不需要对它们重新进行声明。 如果想每个页面都用到一些同样的声明,最好把它们写成 一个单独的文件,然后用 或 指令把这个文件包含进来。
17
Scriptlets Scriptlets 俗称小程序段。我们已经学会了如何在 JSP 网页中在 “ ” 之间嵌入 Java 表达式。但是将 Java 表达式放置到 HTML 文本文件中进行大量的编程工作 是很困难的。 JSP 允许将编写的 Java 代码块嵌入到 JSP 中。具体做法 是:将 Java 代码段置于 “ ” 之间。其用法与表达 式类似,只不过在标记开始处没有等号,在标记结尾之前 要有分号。 代码块就是我们熟知的 Scriptlets 。如果单单是 Scriptlets ,对于 HTML 文本起不了任何作用。而每次 Scriptlets 包含被执行的 Java 代码的时候, JSP 就会被调用。
18
下面我们通过一段代码来了解 Scriptlets 当前时间是: 从运行效果中,页面并没有显示当前时 间,其实采用 “System.out.println” 输出 信息时,该信息是输出到了服务器的日 志文件中去了。由此可以看出,如果仅 仅是包含 Scriptlets 是不会产生 HTML 代 码的。如果想通过 Scriptlets 产生 HTML 代码,就得使用 JSP 页面中的内置对象 out 。下面的例子向我们展示了 Scriptlets 是怎样产生 HTML 文本输出。
19
当前时间是:
20
在上一章中我们已经在一个 Scriptlets 中使用了 out 对 象产生 HTML 代码输出。对于更复杂的 HTML 代码,如果 我们还是使用 out 对象,那就会失去 JSP 编程的优势。其实 我们可以很简单地实现 Scriptlets 和 HTML 的结合。 下面我们举一个简单的例子,产生一个表格,使这个 表格包含从 1 到 n 的数字,虽然这个例子不是很有用,但是 可以从中学到一些技巧。
21
一个表格的例子 <% int n=5; for ( int i = 0; i < n; i++ ) { %> Number <% } %>
22
从上面的代码中我们看出,所有的表格代码都写在 “ ” 外。其实这正是 Scriptlets 和 HTML 的相结合的技 巧。 我们编写另外一个例子来实现 Scriptlets 和 HTML 的相 结合,我们假设有一个布尔型变量 hello ,如果将它的值设 置为 true ,页面输出 “Hello,world” ;如果其值为 false ,页 面输出 “Goodbye, world” 。具体代码如下:
23
<% boolean hello=true; if ( hello ) { %> Hello, world <% } else { %> Goodbye, world <% } %>
24
本章实践项目 —— 实践项目的要求如下: ( 1 )编写一个主页面,用于包含各时间段部分 ( 2 )编写一个被包含的页面,用于显示具体工作计划
25
本章总结 JSP 编译指令 JSP 页面的表达式 JSP 页面的注释 JSP 页面的声明 Scriptlets
Similar presentations