Microsoft PowerPoint - 10-JSP-Scripting-Elements-Chinese.ppt



Similar documents
《C语言基础入门》课程教学大纲

第2章 数据类型、常量与变量

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

登录、注册功能的测试用例设计.doc

国债回购交易业务指引

电信系教学大纲的基本规范

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

修改版-操作手册.doc

徐天宏:《基因天堂》.doc

I

 编号:

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

Microsoft Word - 第7章 图表反转形态.doc

Template BR_Rec_2005.dot

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

Microsoft Word - 第3章.doc


全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

第 一 部 分 MagiCAD for Revit 安 装 流 程

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

Microsoft Word - JAVA3.rtf

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

生产支援功能 使用说明书(IP-110 篇)

用节点法和网孔法进行电路分析

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

第 四 条 建 设 单 位 对 可 能 产 生 职 业 病 危 害 的 建 设 项 目, 应 当 依 照 本 办 法 向 安 全 生 产 监 督 管 理 部 门 申 请 职 业 卫 生 三 同 时 的 备 案 审 核 审 查 和 竣 工 验 收 建 设 项 目 职 业 卫 生 三 同 时 工 作 可

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

Microsoft Word - 文件汇编.doc


国际财务报告准则第13号——公允价值计量

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

!!!!!!!!!!

一、资质申请

火车浏览器脚本制作教程

深圳市新亚电子制程股份有限公司

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

4.3.3 while 语 句 用 于 无 限 循 环 当 while 语 句 的 表 达 式 永 远 不 会 为 布 尔 假 时, 循 环 将 永 远 不 会 结 束, 形 成 无 限 循 环, 也 称 死 循 环 使 用 while 语 句 构 成 无 限 循 环 的 格 式 通 常

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

证券代码: 证券简称:长城电脑 公告编号:

第二讲 数列

øÕªß∂À≤Ÿ◊˜ ÷≤·

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

变 量 的 主 要 作 用 是 存 取 数 据 提 供 存 放 信 息 的 容 器 对 于 变 量 必 须 明 确 变 量 的 命 名 变 量 的 类 型 变 量 的 声 明 及 其 变 量 的 作 用 域 JavaScript 是 一 种 弱 类 型 语 言, 也 就 是 说, 在 声 明 变 量

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

全国教师资格认定管理信息系统

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。


2006年顺德区高中阶段学校招生录取分数线

2016年南开大学MBA招生信息

中 国 软 科 学 年 第 期!!!

证监会行政审批事项目录

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

年 第 期 % %! & % % % % % % &

<4D F736F F D20B9D8D3DA BDECB1CFD2B5C9FAC5C9C7B2B1A8B5BDB5C8D3D0B9D8B9A4D7F7B5C4CDA8D6AAA3A E362E38A3A92E646F63>

教师上报成绩流程图

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2


18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

三武一宗灭佛研究

课程类 别

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

乐视云视频发行平台 操作手册 V1.1

<4D F736F F D20BFC9B1E0B3CCD0F2BFD8D6C6CFB5CDB3C9E8BCC6CAA6B9FABCD2D6B0D2B5B1EAD7BC2E646F63>

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

Microsoft Word - 资料分析练习题09.doc

IntelBook_cn.doc

通用短信平台HTTP接口使用说明V1.0.4

·岗位设置管理流程

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>

<4D F736F F D DB9FAD5AEC6DABBF5B1A8B8E6CAAEC8FDA3BAB9FAD5AEC6DABBF5B5C4B6A8BCDBBBFAD6C6D3EBBBF9B2EEBDBBD2D7D1D0BEBF>

包 头 北 方 创 业 股 份 有 限 公 司 2016 年 第 二 次 临 时 股 东 大 会 会 议 须 知 为 维 护 股 东 合 法 权 益, 确 保 包 头 北 方 创 业 股 份 有 限 公 司 ( 以 下 简 称 公 司 )2016 年 第 二 次 临 时 股 东 大 会 ( 以 下

光明乳业股份有限公司

2009—2010级本科课程教学大纲与课程简介格式

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

Cybozu Garoon 3 管理员手册

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

云信Linux SSH认证代理用户手册

认 为 被 告 省 社 保 局 核 发 依 据 的 文 件 错 误 导 致 少 发 放 77, 元 原 告 于 2014 年 8 月 8 日 向 吉 林 省 人 力 资 源 和 社 会 保 障 厅 ( 以 下 简 称 省 人 社 厅 ) 申 请 行 政 复 议, 该 机 关 于 9 月

思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想

& & ( & ) +,! #

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统 新 用 户 新 用 户 登 入 帐 户 程 序 启 动 网 上 预 约 面 谈 访 问 帐 户 核 对 帐 户 的 地 址 资 料

上证指数

Microsoft PowerPoint - plan03.ppt

Transcription:

2004 Marty Hall 用 JSP 脚 本 元 素 调 用 Java 代 码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com Available in English, Chinese (simplified and traditional script), and 12 other languages 议 程 静 态 和 动 态 文 本 动 态 代 码 和 好 的 JSP 设 计 JSP 表 达 式 servlet 和 JSP 页 面 对 类 似 任 务 的 处 理 JSP scriptlet JSP 声 明 预 定 义 变 量 表 达 式 scriptlet 和 声 明 之 间 的 对 比 3 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

不 同 JSP 构 造 的 应 用 简 单 应 用 复 杂 应 用 脚 本 元 素 直 接 调 用 servlet 代 码 脚 本 元 素 间 接 调 用 servlet 代 码 ( 通 过 实 用 工 具 类 ) bean servlet/jsp 的 组 合 (MVC) MVC 连 同 JSP 表 达 式 语 言 定 制 标 签 4 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 设 计 策 略 : 限 制 JSP 页 面 内 的 Java 代 码 有 两 种 选 择 : 将 25 行 Java 代 码 直 接 放 在 JSP 页 面 中 将 这 25 行 代 码 放 在 单 独 的 Java 类 中, 在 JSP 页 面 中 用 一 行 代 码 调 用 它 为 什 么 第 二 种 选 择 更 好? 开 发 我 们 可 以 在 Java 开 发 环 境 ( 编 辑 器 或 IDE) 中 编 写 单 独 的 类, 而 非 在 HTML 环 境 中 调 试 如 果 代 码 中 含 有 语 法 错 误, 在 编 译 时 就 能 够 直 接 看 到 简 单 的 打 印 语 句 可 以 直 接 看 到 结 果 测 试 我 们 可 以 编 写 测 试 过 程, 每 次 更 改 后 都 通 过 循 环 进 行 上 万 次 的 测 试 重 用 多 个 页 面 都 可 以 使 用 同 一 个 类 5 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

基 本 语 法 HTML 文 本 <H1>Blah</H1> 不 加 更 改 地 传 递 给 客 户 实 际 上 是 由 类 似 于 下 面 的 servlet 代 码 生 成 : out.print("<h1>blah</h1>"); HTML 注 释 <! 注 释 内 容 --> 和 其 他 HTMl 一 样 : 直 接 传 递 给 客 户 JSP 注 释 <%-- 注 释 内 容 --%> 并 不 发 送 给 客 户 要 输 出 <%, 使 用 <\% 6 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 脚 本 元 素 的 类 型 表 达 式 格 式 :<%= expression %> 求 值 并 插 入 到 servlet 的 输 出 中 也 就 是 会 产 生 类 似 于 out.print(expression) 的 语 句 scriptlet 格 式 :<% code %> 逐 字 地 插 入 到 servlet 的 _jspservice 方 法 中 ( 由 service 调 用 ) 声 明 格 式 :<%! code %> 逐 字 地 插 入 到 servlet 类 的 定 义 体 中, 不 在 任 何 方 法 之 内 7 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP 表 达 式 格 式 <%= Java Expression %> 结 果 表 达 式 被 求 值, 转 换 成 字 符 串, 将 按 照 它 在 JSP 页 面 中 出 现 的 位 置 插 入 到 HTML 页 面 中 即, 表 达 式 在 out.print 内 放 置 在 That is, expression placed in _jspservice inside out.print 示 例 当 前 时 间 :<%= new java.util.date() %> 您 的 主 机 名 :<%= request.getremotehost() %> XML 兼 容 的 语 法 <jsp:expression>java Expression</jsp:expression> 在 单 个 页 面 中 不 能 混 合 使 用 不 同 的 版 本 如 果 使 用 jsp:expression 就 必 须 整 个 页 面 都 使 用 XML 8 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP/servlet 的 对 应 原 始 的 JSP <H1>A Random Number</H1> <%= Math.random() %> 所 产 生 的 具 有 代 表 性 的 servlet 代 码 public void _jspservice(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); HttpSession session = request.getsession(true); JspWriter out = response.getwriter(); out.println("<h1>a Random Number</H1>"); out.println(math.random());... 9 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP 表 达 式 : 示 例 <BODY> <H2>JSP Expressions</H2> <UL> <LI>Current time: <%= new java.util.date() %> <LI>Server: <%= application.getserverinfo() %> <LI>Session ID: <%= session.getid() %> <LI>The <CODE>testParam</CODE> form parameter: <%= request.getparameter("testparam") %> </UL> </BODY></HTML> 10 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 预 定 义 变 量 request HttpServletRequest(service/doGet 的 第 一 个 参 数 ) response HttpServletResponse(service/doGet 的 第 二 个 参 数 ) out 用 来 将 输 出 发 送 到 客 户 程 序 的 Writer(JspWriter 带 缓 冲 的 版 本 ) session 与 请 求 关 联 的 HttpSession( 除 非 用 page 指 令 的 session 属 性 将 之 禁 止 ) application ServletContext( 用 于 数 据 共 享 ), 可 通 过 getservletcontext() 获 取 11 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

servlet 和 JSP 的 比 较 : 读 取 三 个 参 数 (Servlet) public class ThreeParams extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { out.println(doctype + "<HTML>\n" + "<HEAD><TITLE>"+title + "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" + "<UL>\n" + " <LI><B>param1</B>: " + request.getparameter("param1") + "\n" + " <LI><B>param2</B>: " + request.getparameter("param2") + "\n" + " <LI><B>param3</B>: " + request.getparameter("param3") + "\n" + "</UL>\n" + "</BODY></HTML>"); 12 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 读 取 三 个 参 数 (Servlet): 结 果 13 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

servlet 和 JSP 的 比 较 : 读 取 三 个 参 数 (JSP) <!DOCTYPE > <HTML> <HEAD> <TITLE>Reading Three Request Parameters</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <H1>Reading Three Request Parameters</H1> <UL> <LI><B>param1</B>: <%= request.getparameter("param1") %> <LI><B>param2</B>: <%= request.getparameter("param2") %> <LI><B>param3</B>: <%= request.getparameter("param3") %> </UL> </BODY></HTML> 14 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 读 取 三 个 参 数 (JSP): 结 果 15 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP scriptlet 格 式 <% Java Code %> 结 果 代 码 被 逐 字 地 插 入 到 servlet 的 _jspservice 方 法 中 示 例 <% String querydata = request.getquerystring(); out.println("attached GET data: " + querydata); %> <% response.setcontenttype("text/plain"); %> XML 兼 容 的 语 法 <jsp:scriptlet>java Code</jsp:scriptlet> 16 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP/servlet 之 间 的 对 应 关 系 原 始 的 JSP <H2>foo</H2> <%= bar() %> <% baz(); %> 所 产 生 的 具 有 代 表 性 的 servlet 代 码 public void _jspservice(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); HttpSession session = request.getsession(); JspWriter out = response.getwriter(); out.println("<h2>foo</h2>"); out.println(bar()); baz();... 17 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP scriptlet: 示 例 假 定 您 希 望 能 够 让 最 终 用 户 定 制 页 面 的 背 景 色 下 面 的 代 码 有 什 么 问 题? <BODY BGCOLOR= "<%= request.getparameter("bgcolor") %>"> 18 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP scriptlet: 示 例 <!DOCTYPE > <HTML> <HEAD> <TITLE>Color Testing</TITLE> </HEAD> <% String bgcolor = request.getparameter("bgcolor"); if ((bgcolor == null) (bgcolor.trim().equals(""))) { bgcolor = "WHITE"; %> <BODY BGCOLOR="<%= bgcolor %>"> <H2 ALIGN="CENTER">Testing a Background of "<%= bgcolor %>"</H2> </BODY></HTML> 19 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP scriptlet: 结 果 20 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 使 用 scriptlet 将 JSP 文 件 的 某 些 部 分 条 件 化 要 点 scriplet 会 被 严 格 按 照 所 写 的 样 子 插 入 到 servlet 中 不 需 要 是 完 整 的 Java 表 达 式 但 完 整 的 表 达 式 常 常 更 清 楚 且 易 于 维 护 示 例 <% if (Math.random() < 0.5) { %> Have a <B>nice</B> day! <% else { %> Have a <B>lousy</B> day! <% %> 具 有 代 表 性 的 结 果 if (Math.random() < 0.5) { out.println("have a <B>nice</B> day!"); else { out.println("have a <B>lousy</B> day!"); 21 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP 声 明 格 式 <%! Java Code %> 结 果 代 码 被 逐 字 地 插 入 到 servlet 类 的 定 义 中, 在 任 何 现 有 方 法 以 外 示 例 <%! private int somefield = 5; %> <%! private void somemethod(...) {... %> 设 计 上 的 考 虑 字 段 当 然 有 用, 但 对 于 方 法 而 言, 通 常 在 单 独 的 Java 类 中 定 义 更 好 一 些 XML 兼 容 的 语 法 <jsp:declaration>java Code</jsp:declaration> 22 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP/servlet 之 间 的 对 应 关 系 原 始 的 JSP <H1>Some Heading</H1> <%! private String randomheading() { return("<h2>" + Math.random() + "</H2>"); %> <%= randomheading() %> ( 也 可 以 使 randomheading 成 为 单 独 Java 类 的 静 态 方 法 ) 23 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP/servlet 之 间 的 对 应 关 系 生 成 的 servlet 代 码 public class xxxx implements HttpJspPage { private String randomheading() { return("<h2>" + Math.random() + "</H2>"); public void _jspservice(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); HttpSession session = request.getsession(true); JspWriter out = response.getwriter(); out.println("<h1>some Heading</H1>"); out.println(randomheading());...... 24 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP 声 明 : 示 例 <!DOCTYPE > <HTML> <HEAD> <TITLE>JSP Declarations</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <H1>JSP Declarations</H1> <%! private int accesscount = 0; %> <H2>Accesses to page since server reboot: <%= ++accesscount %></H2> </BODY></HTML> 25 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP 声 明 : 结 果 26 JSP/servlet/Struts/JSF training: http://www.coreservlets.com JSP 声 明 :jspinit 和 jspdestroy JSP 页 面, 如 同 常 规 servlet, 有 时 需 要 用 到 init 和 destroy 问 题 在 于 : 根 据 JSP 页 面 构 建 的 servlet 有 可 能 已 经 使 用 了 init 和 destroy 覆 盖 它 们 会 引 发 问 题 因 此, 使 用 JSP 声 明 来 声 明 init 或 destroy 是 不 合 法 的 解 决 方 案 : 使 用 jspinit 和 jspdestroy 根 据 JSP 页 面 生 成 的 servlet 一 定 会 init 和 destroy 中 调 用 这 些 方 法, 而 标 准 版 的 jspinit 和 jspdestroy 是 空 的 ( 仅 为 占 位 符, 由 用 户 覆 盖 27 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

JSP 声 明 和 预 定 义 变 量 问 题 预 定 义 变 量 (request, response, out, session, 等 ) 是 _jspservice 方 法 中 的 局 部 变 量 因 而, 由 JSP 声 明 定 义 的 方 法 或 辅 助 类 中 的 方 法 都 不 能 使 用 它 们 怎 么 处 理 这 种 情 况 呢? 解 决 方 案 : 将 它 们 作 为 参 数 传 递, 例 如 <%! private void somemethod(httpsession s) { dosomethingwith(s); %> <% somemethod(session); %> 要 注 意 :JspWriter 的 println 方 法 抛 出 IOException 异 常 使 用 println 的 方 法 要 使 用 throws IOException 28 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 表 达 式 scriptlet 和 声 明 的 对 比 任 务 1 输 出 由 从 1 到 10 之 间 的 5 个 随 机 整 数 构 成 的 项 目 列 表 由 于 本 页 的 结 构 固 定, 并 且 对 于 randomint 方 法, 我 们 使 用 单 独 的 辅 助 类,JSP 表 达 式 完 全 能 够 胜 任 任 务 2 生 成 1 到 10 数 据 项 构 成 的 列 表 ( 随 机 选 定 ), 每 一 项 为 1 到 10 之 间 的 整 数 由 于 列 表 中 的 数 据 项 是 动 态 的, 所 以 需 要 JSP scriptlet 任 务 3 在 首 次 请 求 时 生 成 一 个 随 机 数, 然 后 向 所 有 的 用 户 展 示 这 个 随 机 数, 直 到 服 务 器 重 新 启 动 实 例 变 量 ( 字 段 ) 是 完 成 这 种 持 续 性 的 自 然 方 式 使 用 JSP 声 明 来 完 成 这 项 任 务 29 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

辅 助 类 :RanUtilities package coreservlets; // Always use packages!! /** Simple utility to generate random integers. */ public class RanUtilities { /** A random int from 1 to range (inclusive). */ public static int randomint(int range) { return(1 + ((int)(math.random() * range))); public static void main(string[] args) { int range = 10; try { range = Integer.parseInt(args[0]); catch(exception e) { // Array index or number format // Do nothing: range already has default value. for(int i=0; i<100; i++) { System.out.println(randomInt(range)); 30 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 任 务 1:JSP 表 达 式 ( 代 码 ) <!DOCTYPE > <HTML> <HEAD> <TITLE>Random Numbers</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <H1>Random Numbers</H1> <UL> <LI><%= coreservlets.ranutilities.randomint(10) %> <LI><%= coreservlets.ranutilities.randomint(10) %> <LI><%= coreservlets.ranutilities.randomint(10) %> <LI><%= coreservlets.ranutilities.randomint(10) %> <LI><%= coreservlets.ranutilities.randomint(10) %> </UL> </BODY></HTML> 31 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

任 务 1:JSP 表 达 式 ( 结 果 ) 32 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 任 务 2:JSP scriptlet ( 代 码 : 版 本 1) <!DOCTYPE > <HTML> <HEAD> <TITLE>Random List (Version 1)</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <H1>Random List (Version 1)</H1> <UL> <% int numentries = coreservlets.ranutilities.randomint(10); for(int i=0; i<numentries; i++) { out.println("<li>" + coreservlets.ranutilities.randomint(10)); %> </UL> </BODY></HTML> 33 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

任 务 2:JSP scriptlet ( 结 果 : 版 本 1) 34 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 任 务 2:JSP scriptlet ( 代 码 : 版 本 2) <!DOCTYPE > <HTML> <HEAD> <TITLE>Random List (Version 2)</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <H1>Random List (Version 2)</H1> <UL> <% int numentries = coreservlets.ranutilities.randomint(10); for(int i=0; i<numentries; i++) { %> <LI><%= coreservlets.ranutilities.randomint(10) %> <% %> </UL> </BODY></HTML> 35 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

任 务 2:JSP scriptlet ( 结 果 : 版 本 2) 36 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 任 务 3:JSP 声 明 ( 代 码 ) <!DOCTYPE > <HTML> <HEAD> <TITLE>Semi-Random Number</TITLE> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> <BODY> <%! private int randomnum = coreservlets.ranutilities.randomint(10); %> <H1>Semi-Random Number:<BR><%= randomnum %></H1> </BODY> </HTML> 37 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

任 务 3:JSP 声 明 ( 结 果 ) 38 JSP/servlet/Struts/JSF training: http://www.coreservlets.com 小 结 JSP 表 达 式 格 式 :<%= expression %> 封 装 到 out.print 中, 并 插 入 到 _jspservice JSP scriptlet 格 式 :<% code %> 逐 字 地 插 入 到 servlet 的 _jspservice 方 法 中 JSP 声 明 格 式 :<%! code %> 逐 字 地 插 入 到 servlet 类 的 定 义 体 中 预 定 义 变 量 request, response, out, session, application 限 制 直 接 放 在 页 面 中 的 Java 代 码 考 虑 使 用 辅 助 类 bean servlet/jsp 的 组 合 (MVC) JSP 表 达 式 语 言 定 制 标 签 39 JSP/servlet/Struts/JSF training: http://www.coreservlets.com

2004 Marty Hall 问 题? JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 40 JSP and Servlet Books from Sun Press: http://www.coreservlets.com Available in English, Chinese (simplified and traditional script), and 12 other languages