第 3 章 Java Web 概 述 J2EE(Java 2 Platform Enterprise Edition) 建 立 在 J2SE(Java 2 Platform Standard Edition) 的 基 础 上, 为 企 业 级 应 用 提 供 了 完 整 稳 定 安 全 和 快 速 的 Java 平 台 J2EE 提 供 的 Web 开 发 技 术 主 要 支 持 两 类 软 件 的 开 发 和 应 用, 一 类 是 做 高 级 信 息 系 统 框 架 的 Web 应 用 服 务 器 (Web Application Server), 另 一 类 是 在 Web 应 用 服 务 器 上 运 行 的 Web 应 用 (Web Application) 本 章 主 要 介 绍 Java Web 的 基 本 知 识 以 及 开 发 环 境 的 配 置, 最 后 介 绍 常 见 的 开 发 模 式 本 章 学 习 目 标 : 了 解 什 么 是 Java Web 掌 握 JDK 和 Tomcat 的 安 装 掌 握 在 Tomcat 下 运 行 Java Web 的 方 法 掌 握 MyEclipse 的 安 装 掌 握 MyEclipse 开 发 Java Web 程 序 的 方 法 熟 悉 常 见 的 Java Web 开 发 模 式
Java Web 开 发 课 堂 实 录 3.1 初 识 Java Web Java Web 是 用 Java 技 术 来 解 决 相 关 Web 互 联 网 领 域 的 技 术 总 和, 一 个 Web 应 用 程 序 包 括 Web 客 户 端 和 Web 服 务 器 端 两 部 分 1.Web 客 户 端 Web 客 户 端 通 常 是 指 用 户 计 算 机 上 的 浏 览 器, 如 微 软 的 IE 浏 览 器 或 火 狐 浏 览 器 等 客 户 端 不 需 要 开 发 任 何 用 户 界 面, 而 统 一 采 用 浏 览 器 即 可 2.Web 服 务 器 Web 服 务 器 是 一 台 或 多 台 可 运 行 Web 应 用 程 序 的 计 算 机, 通 常 在 浏 览 器 中 输 入 的 网 络 地 址, 即 Web 服 务 器 的 地 址 当 用 户 在 浏 览 器 的 地 址 栏 中 输 入 网 站 地 址 并 按 回 车 键 后, 请 求 即 被 发 送 到 Web 服 务 器 服 务 器 接 收 到 请 求 后, 会 返 回 给 用 户 带 来 请 求 资 源 的 响 应 消 息 Java 在 服 务 器 端 的 应 用 非 常 丰 富, 比 如 Servlet JSP 和 第 三 方 框 架 等 B/S 中 客 户 端 与 服 务 器 端 采 用 请 求 / 响 应 模 式 进 行 交 互, 其 工 作 流 程 如 图 3-1 所 示 图 3-1 Web 应 用 程 序 的 工 作 流 程 3.2 配 置 Java Web 开 发 环 境 JSP 是 一 种 基 于 Java 的 运 行 在 服 务 器 端 的 动 态 网 站 开 发 技 术, 所 以 首 先 要 安 装 的 就 是 Java 开 发 软 件 包 JDK 另 外 还 需 要 一 个 Web 服 务 器, 在 众 多 Web 服 务 器 中 Tomcat 是 使 用 最 广 泛 的 为 了 提 高 开 发 效 率, 通 常 还 需 要 安 装 IDE( 集 成 开 发 环 境 ) 工 具 MyEclipse 本 节 将 详 细 介 绍 配 置 JSP 开 发 环 境 的 过 程 3.2.1 安 装 JDK JDK(Java Development Kit) 是 一 种 用 于 构 建 在 Java 平 台 上 发 布 的 应 用 程 序 Applet 和 组 件 的 开 发 环 境, 即 编 写 Java 程 序 必 须 使 用 JDK, 它 提 供 了 编 译 Java 和 运 行 Java 程 序 的 环 境 JDK 是 一 切 Java 应 用 程 序 的 基 础, 所 有 的 Java 应 用 程 序 都 是 构 建 在 JDK 之 上 的 JDK 中 还 包 括 完 整 的 JRE(Java Runtime Environment,Java 运 行 环 境 ), 包 括 用 于 产 品 环 境 的 各 种 类 库, 以 及 给 开 发 者 使 用 的 扩 展 库, 如 国 际 化 的 库 IDL 库 JDK 中 还 包 括 各 种 示 例 程 序, 用 以 展 示 Java API 中 的 各 部 分 64
SPSS 第 3 章 Java Web 概 述 练 习 1 JDK 可 以 在 Oracle 公 司 的 官 方 网 站 http://www.oracle.com 下 载, 目 前 最 新 版 本 为 JDK 7u5, 下 载 步 骤 如 下 (1) 打 开 Oracle 公 司 的 官 方 网 站, 在 首 页 的 栏 目 中 选 择 Downloads Java for Developers 选 项, 如 图 3-2 所 示 (2) 单 击 Java for Developers 超 链 接 后, 进 入 Java SE 的 下 载 页 面, 如 图 3-3 所 示 图 3-2 Oracle 官 网 首 页 图 3-3 Java SE 的 下 载 页 面 提 示 由 于 Java 版 本 不 断 更 新, 当 读 者 浏 览 Java SE 的 下 载 页 面 时, 显 示 的 是 当 前 最 新 的 版 本 (3) 单 击 Java Platform (JDK) 上 方 的 DOWNLOAD 按 钮, 打 开 Java SE 的 下 载 列 表 页 面, 其 中 包 括 Windows Solaris 和 Linux 等 平 台 的 不 同 环 境 JDK 的 下 载, 如 图 3-4 所 示 (4) 在 下 载 之 前 需 要 选 中 Accept License Agreement 单 选 按 钮, 接 受 许 可 协 议 由 于 本 书 中 使 用 的 是 32 位 版 的 Windows 操 作 系 统, 因 此 这 里 需 要 选 择 与 平 台 相 对 应 的 Windows x86 类 型 的 jdk-7u5-windows-i586.exe 超 链 接, 对 JDK 进 行 下 载, 如 图 3-5 所 示 图 3-4 Java SE 的 下 载 列 表 页 面 图 3-5 JDK 的 下 载 页 面 65
Java Web 开 发 课 堂 实 录 练 习 2 当 下 载 完 成 后, 在 磁 盘 中 会 发 现 一 个 名 称 为 jdk-7u5-windows-i586.exe 的 可 执 行 文 件 在 Windows 操 作 系 统 下 安 装 JDK 的 操 作 步 骤 如 下 (1) 双 击 运 行 JDK 安 装 文 件 jdk-7u5-windows-i586.exe, 打 开 JDK 的 欢 迎 界 面 (2) 单 击 下 一 步 按 钮 打 开 自 定 义 安 装 对 话 框, 在 其 中 选 择 安 装 的 组 件 及 JDK 的 安 装 路 径, 这 里 修 改 为 D:\Program Files\Java\jdk1.7.0_05\, 如 图 3-6 所 示 (3) 单 击 下 一 步 按 钮 打 开 安 装 进 度 对 话 框, 如 图 3-7 所 示 图 3-6 自 定 义 安 装 对 话 框 图 3-7 进 度 对 话 框 (4) 在 安 装 过 程 中, 会 打 开 如 图 3-8 所 示 的 目 标 文 件 夹 对 话 框, 选 择 JRE 的 安 装 路 径, 这 里 将 其 修 改 为 D:\Program Files\Java\jre7\ (5) 单 击 下 一 步 按 钮, 安 装 JRE 当 JRE 安 装 完 成 之 后, 将 打 开 JDK 安 装 完 成 对 话 框, 如 图 3-9 所 示 图 3-8 目 标 文 件 夹 对 话 框 图 3-9 JDK 安 装 完 成 对 话 框 (6) 单 击 继 续 按 钮, 打 开 JavaFX SDK 安 装 程 序 对 话 框, 单 击 该 对 话 框 中 的 取 消 按 钮, 取 消 对 JavaFX SDK 的 安 装 提 示 JDK 是 Java 的 开 发 环 境, 在 编 写 Java 程 序 时 需 要 使 用 JDK 进 行 编 译 处 理, 它 是 为 开 发 人 员 提 供 的 工 具 JRE 是 Java 程 序 的 运 行 环 境, 包 含 JVM(Java 虚 拟 机 ) 的 实 现 及 Java 核 心 类 库, 编 译 后 的 Java 程 序 必 须 使 用 JRE 执 行 在 JDK 安 装 包 中 集 成 了 JDK 与 JRE, 所 以 在 安 装 JDK 的 过 程 中 会 提 示 安 装 JRE 66
SPSS 第 3 章 Java Web 概 述 当 JDK 安 装 完 成 后, 会 在 安 装 目 录 下 多 一 个 名 称 为 jdk1.7.0_05 的 文 件 夹, 打 开 该 文 件 夹, 如 图 3-10 所 示 图 3-10 JDK 安 装 目 录 从 图 3-10 可 以 看 出,JDK 安 装 目 录 下 具 有 多 个 文 件 夹 和 一 些 网 页 文 件, 分 别 如 下 (1)bin: 提 供 JDK 工 具 程 序, 包 括 javac java javadoc appletviewer 等 可 执 行 程 序 (2)db:JDK 附 带 的 一 个 轻 量 级 的 数 据 库 (3)include: 存 放 用 于 本 地 方 法 的 文 件 (4)jre: 存 放 Java 运 行 环 境 文 件 (5)lib: 存 放 Java 的 类 库 文 件, 即 工 具 程 序 实 际 上 使 用 的 是 Java 类 库 JDK 中 的 工 具 程 序, 大 多 也 由 Java 编 写 而 成 (6)src.zip:Java 提 供 的 API 类 的 源 代 码 压 缩 文 件 如 果 将 来 需 要 查 看 API 的 某 些 功 能 如 何 实 现, 可 以 查 看 这 个 文 件 中 的 源 代 码 内 容 练 习 3 对 于 初 学 者 来 说, 环 境 变 量 的 配 置 是 比 较 容 易 出 错 的, 在 配 置 的 过 程 中 应 当 仔 细 使 用 JDK 一 共 需 要 配 置 两 个 环 境 变 量 :Path 和 classpath( 不 区 分 大 小 写 ) 1.Path 该 参 数 用 于 指 定 操 作 系 统 的 可 执 行 指 令 的 路 径, 也 就 是 要 告 诉 操 作 系 统 Java 编 译 器 在 什 么 地 方 可 以 找 到 将 安 装 JDK 的 默 认 bin 路 径 复 制 后 粘 贴 到 变 量 值 文 本 框 中, 然 后 在 最 后 加 入 一 个 ; 将 java.exe javac.exe javadoc.exe 工 具 的 路 径 告 诉 Windows, 如 图 3-11 所 示 2.classpath Java 虚 拟 机 在 运 行 某 个 类 时 会 按 classpath 指 定 的 目 录 顺 序 去 查 找 这 个 类, 单 击 环 境 变 量 对 话 框 中 的 系 统 变 量 列 表 下 方 的 新 建 按 钮 来 新 建 一 个 变 量 在 弹 出 的 新 建 系 统 变 量 对 话 框 中 按 如 图 3-12 所 示 输 入 变 量 名 classpath 和 变 量 值 D:\Program Files\Java\jdk1.7.0_05\lib\dt.jar;D:\Program Files\Java\jdk1.7.0_05\lib\tools.jar; 67
Java Web 开 发 课 堂 实 录 图 3-11 Path 路 径 设 置 图 3-12 classpath 路 径 设 置 通 过 上 面 的 介 绍, 可 以 了 解 到 JDK 实 际 上 就 是 Java 程 序 开 发 的 一 个 简 易 平 台, 它 不 但 提 供 了 运 行 时 环 境, 也 提 供 了 Java 程 序 在 运 行 时 需 要 加 载 的 类 库 包 可 以 这 样 说,JDK 是 开 发 一 切 Java 程 序 的 基 石, 无 论 何 种 强 大 的 开 发 工 具 都 要 包 含 JDK 开 发 工 具 包 JDK 安 装 和 配 置 完 成 后, 可 以 测 试 其 是 否 能 够 正 常 运 行 选 择 开 始 运 行 命 令, 打 开 运 行 窗 口 输 入 cmd 命 令, 按 回 车 键 进 入 DOS 环 境 中 在 命 令 提 示 符 中 输 入 java version, 系 统 将 输 出 JDK 的 版 本 信 息, 如 下 所 示 C:\Documents and Settings\Administrator>java -version java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing) 这 说 明 JDK 已 经 配 置 成 功 注 意 在 命 令 提 示 符 中 输 入 测 试 命 令 时, 需 要 注 意 java 和 减 号 之 间 有 一 个 空 格 减 号 和 version 之 间 没 有 空 格 3.2.2 安 装 Tomcat Tomcat 是 一 个 免 费 的 开 源 的 Servlet 容 器, 它 是 Apache 基 金 会 的 Jakarta 项 目 中 的 一 个 核 心 项 目, 由 Apache Sun 和 其 他 一 些 公 司 及 个 人 共 同 开 发 而 成 由 于 有 了 Sun 的 参 与 和 支 持, 最 新 的 Servlet 和 JSP 规 范 总 能 在 Tomcat 中 得 到 体 现 由 于 Tomcat 技 术 先 进 性 能 稳 定, 而 且 免 费, 因 而 深 受 Java 爱 好 者 的 喜 爱 并 得 到 了 部 分 软 件 开 发 商 的 认 可, 成 为 目 前 最 流 行 的 Web 应 用 服 务 器 Tomcat 最 新 版 本 是 6.0x,Tomcat 6 支 持 最 新 的 Servlet 2.4 和 JSP 2.0 规 范 Tomcat 提 供 了 各 种 平 台 的 版 本 供 下 载, 可 以 从 http://jakarta.apache.org 上 下 载 其 源 代 码 版 或 者 二 进 制 版 由 于 Java 的 跨 平 台 特 性, 基 于 Java 的 Tomcat 也 具 有 跨 平 台 性 练 习 4 Tomcat 官 方 下 载 地 址 为 http://www.apache.org, 下 载 完 成 之 后 即 可 双 击 安 装 Tomcat, 安 装 步 骤 如 下 (1) 双 击 下 载 的 EXE 文 件 开 始 安 装, 进 入 安 装 向 导 的 欢 迎 界 面, 如 图 3-13 所 示 (2) 单 击 Next 按 钮, 进 入 Tomcat 的 License Agreement 界 面, 如 图 3-14 所 示 (3) 单 击 I Agree 按 钮 接 受 协 议 条 款, 进 入 选 择 安 装 Tomcat 组 件 界 面 启 用 Service 复 选 框 将 把 Tomcat 作 为 Windows 服 务, 启 用 Source Code 复 选 框 将 会 安 装 Tomcat 的 源 代 码, 启 用 Start Menu Items 复 选 框 将 会 在 开 始 菜 单 中 增 加 Tomcat 的 菜 单 项, 启 用 Examples 复 选 框 将 会 安 装 JSP 和 Servlet 示 例 程 序, 如 图 3-15 所 示 (4) 单 击 Next 按 钮, 进 入 下 一 步 安 装, 指 定 Tomcat 的 安 装 路 径, 可 以 单 击 Browse 按 钮 任 意 选 择 安 装 路 径, 在 此 采 用 默 认 的 安 装 路 径, 如 图 3-16 所 示 68
SPSS 第 3 章 Java Web 概 述 图 3-13 欢 迎 界 面 图 3-14 License Agreement 界 面 图 3-15 选 择 安 装 组 件 图 3-16 选 择 安 装 路 径 (5) 指 定 完 安 装 路 径 之 后, 单 击 Next 按 钮 进 入 Tomcat 的 配 置 界 面, 配 置 Tomcat 的 监 听 端 口, 默 认 为 8080 端 口, 还 可 指 定 用 户 名 admin 的 密 码, 如 图 3-17 所 示 (6) 单 击 Next 按 钮, 进 入 下 一 步 安 装 界 面, 安 装 Java Virtual Machine, 指 定 jre 的 安 装 路 径, 在 此 采 用 默 认 安 装 路 径, 如 图 3-18 所 示 图 3-17 配 置 界 面 图 3-18 Java Virtual Machine 的 安 装 (7) 单 击 Install 按 钮 进 入 安 装 界 面, 如 图 3-19 所 示 (8) 安 装 完 成 显 示 如 图 3-20 所 示 界 面 单 击 Finish 按 钮, 结 束 安 装 69
Java Web 开 发 课 堂 实 录 图 3-19 安 装 界 面 图 3-20 安 装 完 成 界 面 (9) 安 装 完 Tomcat 后, 进 行 配 置, 在 我 的 电 脑 属 性 高 级 环 境 变 量 系 统 变 量 中 添 加 以 下 环 境 变 量 ( 本 节 中 Tomcat 安 装 在 C:\Program Files\Apache Software Foundation\Tomcat 6.0): CATALINA_HOME: C:\Program Files\Apache Software Foundation\Tomcat 6.0 CATALINA_BASE: C:\Program Files\Apache Software Foundation\Tomcat 6.0 TOMCAT_HOME: C:\Program Files\Apache Software Foundation\Tomcat 6.0 (10) 修 改 环 境 变 量 中 的 classpath, 把 Tomcat 安 装 目 录 下 的 servlet.jar 追 加 到 classpath 中 去, 修 改 后 的 classpath 如 下 classpath=.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar;%catalina_home %\lib\servlet-api.jar (11) 在 IE 中 访 问 http://localhost:8080, 如 果 看 到 Tomcat 的 欢 迎 页 面 说 明 安 装 成 功 了, 如 图 3-21 所 示 70 图 3-21 Tomcat 欢 迎 界 面
SPSS 第 3 章 Java Web 概 述 练 习 5 安 装 JDK 和 Tomcat 之 后 便 可 以 开 发 JSP 程 序 了, 只 是 这 种 开 发 模 式 比 较 笨 拙 和 麻 烦 下 面 以 一 个 简 单 的 JSP 页 面 介 绍 这 种 开 发 的 过 程, 具 体 步 骤 如 下 (1) 首 先 打 开 Tomcat 安 装 目 录, 在 webapps 目 录 下 使 用 项 目 名 称 创 建 一 个 新 目 录, 这 里 为 test (2) 在 test 目 录 下 创 建 一 个 名 为 test.jsp 的 JSP 文 件 (3) 用 记 事 本 打 开 test.jsp, 并 添 加 如 下 的 代 码 <%@ page contenttype="text/html; charset=gb2312" %> <html> <head> <title> 第 一 个 JSP 页 面 </title> </head> <body> <h3> 这 是 运 行 在 Tomcat 服 务 器 下, 创 建 的 第 一 个 JSP 页 面 </h3> <h4> <% java.util.date dt=new java.util.date(); int year=dt.getyear(); year+=1900; int month=dt.getmonth(); month+=1; int date=dt.getdate(); int day=dt.getday(); String str_year=string.valueof(year); String str_month=string.valueof(month); String str_date=string.valueof(date); String str_day=string.valueof(day); out.print(" 现 在 时 间 是 :"+str_year+" 年 "); out.print(str_month+" 月 "); out.print(str_date+" 日 "); out.println(" 星 期 "+str_day); %></h4> </body> </html> (4) 在 输 入 时 注 意 大 小 写 必 须 完 全 一 致, 否 则 可 能 出 错, 最 后 保 存 test.jsp 文 件 (5) 启 动 Tomcat 服 务 器, 然 后 在 浏 览 器 中 输 入 http://localhost:8080/test/test.jsp 访 问 test.jsp, 运 行 效 果 如 图 3-22 所 示 图 3-22 test.jsp 运 行 效 果 71
Java Web 开 发 课 堂 实 录 3.2.3 安 装 MyEclipse MyEclipse 是 一 个 十 分 优 秀 的 用 于 开 发 Java J2EE 的 Eclipse 插 件 集 合,MyEclipse 的 功 能 非 常 强 大, 支 持 也 十 分 广 泛, 尤 其 是 对 各 种 开 源 产 品 的 支 持 十 分 不 错 MyEclipse 企 业 级 工 作 平 台 (MyEclipse Enterprise Workbench,MyEclipse) 是 对 Eclipse IDE 的 扩 展, 利 用 它 可 以 在 数 据 库 和 JavaEE 的 开 发 发 布, 以 及 应 用 程 序 服 务 器 的 整 合 方 面 极 大 地 提 高 工 作 效 率 它 是 功 能 丰 富 的 JavaEE 集 成 开 发 环 境, 包 括 完 备 的 编 码 调 试 测 试 和 发 布 功 能, 完 整 支 持 HTML Struts JSF CSS JavaScript SQL Hibernate MyEclipse 提 供 了 如 下 几 方 面 的 工 具 (1)JavaEE 模 型 (2)Web 开 发 工 具 (3)EJB 开 发 工 具 (4) 应 用 程 序 服 务 器 的 连 接 器 (5)JavaEE 项 目 部 署 服 务 (6) 数 据 库 服 务 练 习 6 MyEclipse 最 新 版 本 为 MyEclipse 10, 它 基 于 最 新 的 Eclipse 3.7, 使 用 了 最 新 的 桌 面 与 Web 开 发 技 术, 包 括 HTML5 和 JavaEE 6, 支 持 JPA 2.0 JSF 2.0 Eclipselink 2.1 以 及 Apache 的 OpenJPA 2.0 读 者 可 以 到 官 方 网 站 http://downloads.myeclipseide.com 下 载 最 新 版 本 下 面 介 绍 MyEclipse 10 的 安 装 过 程 (1) 双 击 下 面 的 MyEclipse 10 安 装 程 序 进 入 欢 迎 界 面, 如 图 3-23 所 示 (2) 单 击 Next 按 钮 进 入 下 一 步 安 装 界 面, 如 图 3-24 所 示 在 该 界 面 中 启 用 I accept the terms of the license agreement 复 选 框 表 示 同 意 安 装 协 议, 再 单 击 Next 按 钮 图 3-23 MyEclipse 欢 迎 界 面 图 3-24 选 择 协 议 界 面 (3) 在 进 入 的 安 装 界 面 中 指 定 安 装 目 录, 单 击 Change 按 钮 可 以 更 改 安 装 路 径 在 本 书 中 就 采 用 默 认 的 安 装 路 径, 如 图 3-25 所 示 (4) 单 击 Next 按 钮 选 择 要 安 装 的 内 容, 其 中 默 认 为 ALL( 全 部 安 装 ), 如 图 3-26 所 示 (5) 单 击 Next 按 钮 进 行 安 装, 如 图 3-27 所 示 为 安 装 时 的 进 度 界 面 (6) 安 装 完 成 之 后 单 击 Next 按 钮 进 入 安 装 完 成 界 面, 再 单 击 Finish 按 钮 结 束 安 装, 如 图 3-28 72
SPSS 第 3 章 Java Web 概 述 所 示 图 3-25 选 择 安 装 界 面 图 3-26 选 择 要 安 装 的 内 容 图 3-27 安 装 进 度 界 面 图 3-28 安 装 完 成 界 面 安 装 完 成 之 后, 首 次 运 行 MyEclipse 10 时 会 弹 出 指 定 工 作 空 间 对 话 框, 如 图 3-29 所 示 单 击 Browse 按 钮 可 以 选 择 一 个 目 录 用 来 保 存 项 目, 启 用 Use this as the default and do not ask again 复 选 框 可 以 将 此 目 录 作 为 默 认 的 工 作 空 间, 再 次 打 开 时 将 不 会 提 示 图 3-29 选 择 工 作 空 间 目 录 单 击 OK 按 钮 进 入 MyEclipse 10 的 工 作 界 面, 如 图 3-30 所 示 73
Java Web 开 发 课 堂 实 录 图 3-30 MyEclipse 10 练 习 7 为 了 提 高 开 发 效 率, 需 要 将 Tomcat 服 务 器 配 置 到 MyEclipse 之 中, 为 Web 项 目 指 定 一 台 Web 应 用 服 务 器, 然 后 即 可 在 MyEclipse 中 操 作 Tomcat 并 自 动 部 署 和 运 行 Web 项 目, 操 作 步 骤 如 下 (1) 在 MyEclipse 中 单 击 Window Preferences 选 项 打 开 Preferences 窗 口 (2) 在 Preferences 窗 口 中 选 择 MyEclipse Servers Tomcat Tomcat 6.x( 这 里 选 择 的 Tomcat 必 须 是 已 经 成 功 安 装 的 版 本 ), 如 图 3-31 所 示 (3) 选 择 Enable 单 选 按 钮, 启 用 Tomcat 服 务 器 并 单 击 Tomcat home directory 右 边 的 按 钮, 指 定 Tomcat 6 的 安 装 目 录, 如 图 3-32 所 示 其 中,Tomcat base directory 和 Tomcat temp directory 两 项 是 自 动 生 成 的, 不 需 要 手 动 配 置 图 3-31 Tomcat 6.x 的 配 置 界 面 图 3-32 指 定 Tomcat 的 安 装 目 录 (4) 单 击 Apply 按 钮, 应 用 当 前 的 Tomcat 6.x 配 置 (5) 选 中 Tomcat 6.x 中 的 JDK 一 项, 如 图 3-33 所 示 74
SPSS 第 3 章 Java Web 概 述 提 示 如 果 只 配 置 了 Tomcat 服 务 器, 而 没 有 配 置 JDK, 则 MyEclipse 是 无 法 正 常 部 署 Web 应 用 的, 也 无 法 正 常 运 行 Tomcat 服 务 器 (6) 单 击 Tomcat 6.x JDK name 文 本 框 右 边 的 按 钮, 将 打 开 Add JDK 窗 口 在 该 窗 口 中 单 击 JRE home 文 本 框 右 边 的 按 钮, 指 定 JDK 的 安 装 目 录, 如 图 3-34 所 示 其 中 JRE name 会 自 动 生 成, 也 可 以 手 动 修 改 图 3-33 JDK 配 置 界 面 图 3-34 指 定 JDK 的 安 装 目 录 (7) 单 击 Finish 按 钮, 关 闭 Add JDK 窗 口, 回 到 JDK 配 置 窗 口 单 击 该 窗 口 中 的 Apply 按 钮, 并 单 击 OK 按 钮, 完 成 Tomcat 应 用 程 序 服 务 器 的 配 置 3.3 Java Web 开 发 模 式 使 用 Java Web 技 术 实 现 时 可 以 借 助 于 多 种 相 关 的 开 发 技 术, 如 常 见 的 JavaBean Servlet 等, 也 可 以 使 用 支 持 MVC(Model View Controller) 的 设 计 框 架, 常 见 的 框 架 有 Struts Spring JSF 等 不 同 技 术 的 组 合 产 生 了 不 同 的 开 发 模 式, 本 节 将 介 绍 最 常 用 的 5 种 Java Web 开 发 模 式 3.3.1 单 一 JSP 模 式 作 为 一 个 JSP 技 术 初 学 者, 使 用 纯 粹 JSP 代 码 实 现 网 站 是 其 首 选 在 这 种 模 式 中 实 现 网 站, 其 实 就 是 在 JSP 页 面 中 包 含 各 种 代 码, 如 HTML 标 记 CSS 标 记 JavaScript 标 记 逻 辑 处 理 数 据 库 处 理 代 码 等 这 么 多 种 代 码 放 置 在 一 个 页 面 中, 如 果 出 现 错 误, 不 容 易 查 找 和 调 试 这 种 模 式 设 计 出 的 网 站, 除 了 运 行 速 度 和 安 全 性 外, 采 用 JSP 技 术 或 采 用 ASP 技 术 就 没 有 什 么 大 的 差 别 了 其 执 行 原 理 如 图 3-35 所 示 3.3.2 JSP+JavaBean 模 式 对 单 一 模 式 进 行 改 进, 将 JSP 页 面 响 应 请 求 转 交 给 JavaBean 处 理, 最 后 将 结 果 返 回 客 户 所 有 的 数 据 通 过 bean 来 处 理,JSP 实 现 页 面 的 显 示 JSP+JavaBean 模 式 技 术 实 现 了 页 面 的 显 示 和 业 务 逻 辑 相 分 离 在 这 种 模 式 中, 使 用 JSP 技 术 中 的 HTML CSS 等 可 以 非 常 容 易 地 构 建 数 据 显 75
Java Web 开 发 课 堂 实 录 示 页 面, 而 对 于 数 据 处 理 可 以 交 给 JavaBean 技 术, 如 连 接 数 据 库 代 码 显 示 数 据 库 代 码 将 执 行 特 定 功 能 代 码 封 装 到 JavaBean 中 时, 同 时 也 达 到 了 代 码 重 用 的 目 的 如 显 示 当 前 时 间 的 JavaBean, 不 仅 可 以 用 在 当 前 页 面, 还 可 以 用 在 其 他 页 面 图 3-35 单 一 JSP 模 式 这 种 模 式 的 使 用, 已 经 显 示 出 JSP 技 术 的 优 势, 但 并 不 明 显 因 为 大 量 使 用 该 模 式 时, 常 常 会 导 致 页 面 嵌 入 大 量 脚 本 语 言 或 者 Java 代 码, 特 别 是 在 处 理 的 业 务 逻 辑 很 复 杂 时 综 上 所 述, 该 模 式 不 能 满 足 大 型 应 用 的 要 求, 但 是 可 以 很 好 地 满 足 中 小 型 Web 应 用 的 需 要, 其 执 行 原 理 如 图 3-36 所 示 图 3-36 JSP+JavaBean 解 决 Web 问 题 3.3.3 JSP+JavaBean+Servlet 模 式 MVC(Model View Controller) 是 一 个 设 计 模 式, 它 强 制 性 地 使 应 用 程 序 的 输 入 处 理 和 输 出 分 开 使 用 MVC 应 用 程 序 被 分 成 三 个 核 心 部 件 : 模 型 视 图 控 制 器, 每 个 部 分 各 自 处 理 自 己 的 任 务 1. 模 型 模 型 (Model) 就 是 业 务 流 程 / 状 态 的 处 理 以 及 业 务 规 则 的 制 定 业 务 流 程 的 处 理 过 程 对 其 他 层 来 说 是 黑 箱 操 作, 模 型 接 受 视 图 请 求 的 数 据, 并 返 回 最 终 的 处 理 结 果 业 务 模 型 的 设 计 可 以 说 是 MVC 最 主 要 的 核 心 MVC 设 计 模 式 告 诉 我 们, 把 应 用 的 模 型 按 一 定 的 规 则 抽 取 出 来, 抽 取 的 层 次 很 重 要, 这 也 是 判 断 开 发 人 员 是 否 优 秀 的 设 计 依 据 抽 象 与 具 体 不 能 隔 得 太 远, 也 不 能 太 近 2. 视 图 视 图 (View) 代 表 用 户 交 互 界 面, 对 于 Web 应 用 来 说 可 以 概 括 为 HTML 界 面, 也 可 以 是 XHTML XML 和 Applet 随 着 应 用 的 复 杂 性 和 规 模 性, 界 面 的 处 理 也 变 得 具 有 挑 战 性 一 个 应 用 可 能 有 很 多 76
SPSS 第 3 章 Java Web 概 述 不 同 的 视 图,MVC 设 计 模 式 对 于 视 图 的 处 理 仅 限 于 视 图 上 数 据 的 采 集 和 处 理, 以 及 用 户 的 请 求, 而 不 包 括 在 视 图 上 的 业 务 流 程 的 处 理 业 务 流 程 的 处 理 交 给 模 型 处 理 例 如 一 个 订 单 的 视 图 只 接 受 来 自 模 型 的 数 据 并 显 示 给 用 户, 以 及 将 用 户 界 面 的 输 入 数 据 和 请 求 传 递 给 控 制 和 模 型 3. 控 制 器 控 制 器 (Controller) 可 以 理 解 为 从 用 户 接 收 请 求 将 模 型 与 视 图 匹 配 在 一 起, 共 同 完 成 用 户 的 请 求 划 分 控 制 层 的 作 用 也 很 明 显, 它 清 楚 地 告 诉 你, 它 就 是 一 个 分 发 器, 选 择 什 么 样 的 模 型, 选 择 什 么 样 的 视 图, 可 以 完 成 什 么 样 的 用 户 请 求 控 制 层 并 不 做 任 何 的 数 据 处 理 例 如, 用 户 单 击 一 个 连 接, 控 制 层 接 受 请 求 后 并 不 处 理 业 务 信 息, 它 只 把 用 户 的 信 息 传 递 给 模 型, 告 诉 模 型 做 什 么, 选 择 符 合 要 求 的 视 图 返 回 给 用 户 因 此, 一 个 模 型 可 能 对 应 多 个 视 图, 一 个 视 图 可 能 对 应 多 个 模 型 模 型 视 图 与 控 制 器 的 分 离, 使 得 一 个 模 型 可 以 具 有 多 个 显 示 视 图 如 果 用 户 通 过 某 个 视 图 的 控 制 器 改 变 了 模 型 的 数 据, 所 有 其 他 依 赖 于 这 些 数 据 的 视 图 都 会 反 映 出 这 些 变 化 因 此, 无 论 何 时 发 生 了 何 种 数 据 变 化, 控 制 器 都 会 将 变 化 通 知 所 有 的 视 图, 导 致 显 示 的 更 新 JSP+JavaBean+Servlet 技 术 组 合 很 好 地 实 现 了 MVC 模 式, 其 中 View 通 常 是 JSP 文 件, 即 页 面 显 示 部 分 ;Controller 用 Servlet 来 实 现, 即 页 面 显 示 的 逻 辑 部 分 实 现 ;Model 通 常 用 服 务 端 的 JavaBean 或 者 EJB 实 现, 即 业 务 逻 辑 部 分 的 实 现, 其 形 式 如 图 3-37 所 示 图 3-37 MVC 模 式 3.3.4 Struts 框 架 模 式 除 了 以 上 这 些 模 式 之 外, 还 可 以 使 用 框 架 实 现 JSP 应 用, 如 Struts JSF 等 框 架 本 节 以 Struts 为 例, 介 绍 使 用 框 架 实 现 JSP 网 站 Struts 是 由 一 组 相 互 协 作 的 类 Servlet 以 及 丰 富 的 标 签 库 和 独 立 于 该 框 架 工 作 的 实 用 程 序 类 组 成 Struts 有 其 自 己 的 控 制 器, 同 时 整 合 了 其 他 的 一 些 技 术 去 实 现 模 型 层 和 视 图 层 在 模 型 层,Struts 可 以 很 容 易 地 与 数 据 访 问 技 术 相 结 合, 包 括 EJB JDBC 和 Object Relation Bridge 在 视 图 层,Struts 能 够 与 JSP XSL 等 这 些 表 示 层 组 件 相 结 合 Struts 框 架 是 MVC 模 式 的 体 现, 可 以 分 别 从 模 型 视 图 控 制 几 方 面 来 了 解 Struts 的 体 系 结 构 (Architecture) 如 图 3-38 所 示 显 示 了 Struts 框 架 的 体 系 结 构 在 响 应 客 户 请 求 时, 各 个 部 分 工 作 的 原 理 在 图 3-38 中 可 以 看 到, 当 用 户 在 客 户 端 发 出 一 个 请 求 后,Controller 控 制 器 获 得 该 请 求 会 调 用 struts-config.xml 文 件 找 到 处 理 该 请 求 的 JavaBean 模 型 此 时 控 制 权 转 交 给 Action 来 处 理, 或 者 调 用 相 应 的 ActionForm 在 做 上 述 工 作 的 同 时, 控 制 器 调 用 相 应 的 JSP 视 图, 并 在 视 图 中 调 用 JavaBean 或 EJB 处 理 结 果 最 后 直 接 转 到 视 图 中 显 示, 在 显 示 视 图 的 时 候 需 要 调 用 Struts 的 标 签 和 应 用 程 序 的 属 性 文 件 77
Java Web 开 发 课 堂 实 录 图 3-38 Struts 体 系 结 构 3.3.5 J2EE 模 式 实 现 Struts 等 框 架 的 出 现 已 经 解 决 了 大 部 分 JSP 网 站 的 实 现, 但 还 不 能 满 足 一 些 大 公 司 的 业 务 逻 辑 较 为 复 杂 安 全 性 要 求 较 高 的 网 站 实 现 J2EE 是 JSP 实 现 企 业 级 Web 开 发 的 标 准, 是 纯 粹 基 于 Java 的 解 决 方 案 1998 年,Sun 发 布 了 EJB 1.0 标 准 EJB 为 企 业 级 应 用 中 必 不 可 少 的 数 据 封 装 事 务 处 理 交 易 控 制 等 功 能 提 供 了 良 好 的 技 术 基 础 至 此,J2EE 平 台 的 三 大 核 心 技 术 Servlet JSP 和 EJB 都 已 先 后 问 世 1999 年,Sun 正 式 发 布 了 J2EE 的 第 一 个 版 本 到 2003 年 时,Sun 的 J2EE 版 本 已 经 升 级 到 了 1.4 版, 其 中 三 个 关 键 组 件 的 版 本 也 演 进 到 了 Servlet 2.4 JSP 2.0 和 EJB 2.1 至 此,J2EE 体 系 及 相 关 的 软 件 产 品 已 经 成 为 Web 服 务 端 开 发 的 一 个 强 有 力 的 支 撑 环 境 在 这 种 模 式 里,EJB 替 代 了 前 面 提 到 的 JavaBean 技 术 J2EE 设 计 模 式 由 于 框 架 大, 不 容 易 编 写, 不 容 易 调 试, 比 较 难 以 掌 握, 目 前 只 是 应 用 在 一 些 大 型 的 网 站 上 J2EE 应 用 程 序 是 由 组 件 构 成 的 J2EE 组 件 是 具 有 独 立 功 能 的 软 件 单 元, 它 们 通 过 相 关 的 类 和 文 件 组 装 成 J2EE 应 用 程 序, 并 与 其 他 组 件 交 互, 如 图 3-39 所 示 图 3-39 J2EE 体 系 结 构 78
SPSS 第 3 章 Java Web 概 述 3.4 实 例 应 用 : 使 用 MyEclipse 开 发 Java Web 程 序 3.4.1 实 例 目 标 MyEclipse 是 开 发 Java Web 程 序 的 首 选 工 具, 它 为 开 发 人 员 提 供 了 一 流 的 Java 集 成 开 发 环 境 前 面 介 绍 了 MyEclipse 的 安 装, 以 及 与 Tomcat 服 务 器 的 整 合 本 次 实 例 将 使 用 MyEclipse 开 发 一 个 简 单 的 Java Web 程 序, 讲 解 使 用 MyEclipse 开 发 Web 应 用 的 具 体 方 法 3.4.2 技 术 分 析 MyEclipse 提 供 了 很 多 记 事 本 不 具 有 的 特 点 和 显 著 的 优 势, 如 自 动 编 译 语 法 着 色 代 码 格 式 化 以 及 自 动 提 示 等 使 用 MyEclipse 开 发 时 大 致 需 要 经 过 三 个 阶 段, 第 一 个 是 创 建 项 目, 第 二 个 是 在 项 目 中 进 行 具 体 的 开 发 和 编 码, 最 后 是 发 布 项 目 到 Tomcat 并 测 试 运 行 3.4.3 实 现 步 骤 (1) 打 开 MyEclipse 开 发 界 面, 选 择 File New Project 选 项, 打 开 New Project 窗 口 在 该 窗 口 中 选 择 Web Project 选 项, 启 动 Web 项 目 创 建 向 导, 如 图 3-40 所 示 (2) 单 击 Next 按 钮, 在 打 开 的 New Web Project 窗 口 的 Project Name 文 本 框 中 输 入 MyFirstWebPro, 并 选 中 J2EE Specification Level 为 Java EE 6.0, 其 他 采 用 默 认 设 置, 如 图 3-41 所 示 图 3-40 启 动 Web 项 目 创 建 向 导 图 3-41 创 建 新 的 Web 项 目 (3) 单 击 Finish 按 钮, 完 成 项 目 MyFirstWebPro 的 创 建 此 时 在 MyEclipse 平 台 左 侧 的 项 目 资 源 管 理 器 中 将 显 示 MyFirstWebPro 项 目 的 目 录 结 构, 如 图 3-42 所 示 79
Java Web 开 发 课 堂 实 录 MyFirstWebPro 项 目 的 目 录 结 构 图 3-42 项 目 MyFirstWebPro 的 目 录 结 构 Web 项 目 创 建 完 成 后, 就 可 以 根 据 实 际 需 要 创 建 类 文 件 JSP 文 件 或 其 他 文 件 了 (4) 在 MyFirstWebPro 项 目 中 右 击 WebRoot 节 点 选 择 New Other 选 项 打 开 New 窗 口 在 该 窗 口 中 选 择 MyEclipse Web JSP(Advanced Templates) 选 项, 如 图 3-43 所 示 (5) 单 击 Next 按 钮 在 打 开 的 Create a new JSP page 窗 口 中 将 文 件 的 名 字 修 改 为 welcome.jsp, 然 后 选 择 使 用 默 认 的 JSP 模 板, 如 图 3-44 所 示 图 3-43 New 窗 口 图 3-44 创 建 JSP 页 面 窗 口 (6) 单 击 Finish 按 钮 完 成 JSP 文 件 的 创 建 此 时, 在 项 目 资 源 管 理 器 的 WebRoot 节 点 下, 将 自 动 添 加 一 个 名 称 为 welcome.jsp 的 文 件, 同 时,MyEclipse 会 自 动 以 默 认 的 与 JSP 文 件 关 联 的 编 辑 器 将 文 件 在 右 侧 的 编 辑 窗 口 中 打 开 (7) 将 welcome.jsp 文 件 中 的 默 认 代 码 修 改 为 如 下 的 代 码 <%@ page language="java" import="java.util.*" pageencoding="gb2312"%> <% String path = request.getcontextpath(); String basepath = request.getscheme() + "://" + request.getservername() + ":" + request.getserverport() + path + "/"; %> 80
SPSS 第 3 章 Java Web 概 述 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basepath%>"> <title> 第 一 个 Java Web 应 用 </title> </head> <body> <center> 欢 迎 访 问 我 的 第 一 个 Java Web 应 用!</center> </body> </html> 将 编 辑 好 的 JSP 文 件 保 存 至 此 就 完 成 了 一 个 简 单 的 JSP 页 面 的 创 建 剩 下 的 工 作 就 是 发 布 到 Tomcat 并 运 行 了 (8) 选 中 MyFirstWebPro 应 用 的 根 目 录, 单 击 工 具 栏 中 的 按 钮 弹 出 Project Deployments 对 话 框, 如 图 3-45 所 示 (9) 单 击 Add 按 钮 打 开 New Deployment 窗 口 在 Server 下 拉 列 表 选 项 中 选 择 Tomcat 6.x, 其 他 采 用 默 认 设 置, 如 图 3-46 所 示 图 3-45 Project Deployments 对 话 框 图 3-46 选 择 服 务 窗 口 (10) 当 Project Deployments 对 话 框 的 底 部 出 现 Successfully deployed 时 表 示 部 署 成 功 成 功 部 署 后, 单 击 中 右 边 的 倒 三 角 箭 头, 选 择 Tomcat 6.x Start 选 项, 启 动 Tomcat 应 用 服 务 器 启 动 成 功 后, 打 开 IE 浏 览 器, 在 地 址 栏 中 输 入 http://localhost:8080/myfirstwebpro/ welcome.jsp, 显 示 如 图 3-47 所 示 的 页 面 效 果 图 3-47 访 问 JSP 页 面 81
Java Web 开 发 课 堂 实 录 3.5 在 Tomcat 中 手 动 部 署 Web 应 用 拓 展 训 练 在 MyEclipse 中 创 建 一 个 名 称 为 WebTest 的 Web 项 目, 并 在 项 目 下 创 建 一 个 index.jsp 然 后 在 Tomcat 的 webapps 目 录 下 创 建 一 个 与 Web 项 目 名 称 相 同 的 文 件 夹 WebTest 再 将 WebTest 项 目 中 的 WebRoot 目 录 下 的 所 有 文 件 复 制 到 该 文 件 夹 下 接 下 来 双 击 startup.bat 文 件 启 动 Tomcat 服 务 器, 输 入 http://localhost:8080/webtest 请 求 index.jsp 文 件, 运 行 效 果 如 图 3-48 所 示 图 3-48 index.jsp 运 行 效 果 3.6 课 后 练 习 一 填 空 题 1.Web 开 发 技 术 大 体 上 也 可 以 被 分 为 客 户 端 技 术 和 技 术 两 大 类 2. 是 Java 程 序 的 运 行 环 境 3. 使 用 JDK 需 要 配 置 Path 和 两 个 环 境 变 量 4. 配 置 JDK 时 需 要 将 java.exe 的 路 径 添 加 到 环 境 变 量 中 二 选 择 题 1.Javac 位 于 JDK 的 目 录 下 A.bin B.include C.jre D.lib 2.Tomcat 服 务 器 的 默 认 端 口 是 A.80 B.8080 C.3366 D.1433 3. 在 JSP 页 面 中 包 含 各 种 代 码, 如 HTML 标 记 CSS 标 记 JavaScript 标 记 逻 辑 处 理 数 据 库 处 理 代 码 这 属 于 开 发 模 式 82
SPSS 第 3 章 Java Web 概 述 A.JSP+JavaBean B.J2EE 框 架 C.Struts 框 架 D. 单 一 JSP 4.MVC 模 式 中 的 Controller 使 用 来 实 现 A.Servlet B.JSP C.JavaBean D.EJB 三 简 答 题 1. 运 行 一 个 Java Web 页 面 需 要 哪 些 工 具? 2. 简 述 JDK 在 JSP 开 发 中 的 作 用, 以 及 配 置 方 法 3. 简 述 MyEclipse 的 安 装 以 及 开 发 JSP 页 面 的 过 程 4. 谈 谈 单 一 JSP 模 式 的 开 发 方 法 5. 论 述 常 见 的 几 种 JSP 开 发 模 式, 以 及 各 自 的 特 点 83