《Java面试100题参考答案.pdf》由会员分享,可在线阅读,更多相关《Java面试100题参考答案.pdf(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面 试 100题 参 考 答 案 Stru tsl的 工 作 原 理 6:H I E S.在 web应 用 程 序 启 动 就 会 加 载 ActionServlet,ActionServlet从 配 置 文 件 struts-config.xml中 读 取 配 置 信 息,并 把 它 们 存 放 到 各 种 配 置 对 象 中。用 户 发 起 请 求 后,按 如 下 步 骤 执 行:(1)用 户 的 请 求 以 HTTP方 式 传 输 到 服 务 器 上,接 受 请 求 的 是 ActionServlet.(2)ActionServlet接 收 到 请 求 后,会 查 找 Strut
2、s-config.xml文 件 来 确 定 服 务 器 上 是 否 有 用 户 请 求 的 操 作,此 处 用 户 请 求 操 作 应 为 登 陆 操 作。如 果 没 有,则 返 回 一 个 用 户 请 求 无 效 的 出 错 信 息。(3)当 ActionServlet请 求 找 到 用 户 请 求 的 A ctio n后,首 先 将 用 户 输 入 的 表 单 参 数 打 包 成 一 个 ActionFrom对 象。接 着 ActionServlet再 根 据 struts-config.xml中 的 配 置 信 息 决 定 是 否 要 执 行 ActionFrom对 象 中 的 Vali
3、date方 法。若 Validate方 法 执 行 有 错,则 返 回。否 则,继 续 下 一 步。(4)系 统 生 成 一 个 用 户 所 请 求 的 Action的 实 例 对 象,将 前 面 的 ActionFrom对 象 传 递 给 它,运 行 它 的 Execute。方 法。(5)execute。执 行 结 束 前 会 生 成 以 和 Action Forward类 型 的 对 象 并 将 之 返 回 给 ActionServlet,该 对 象 的 作 用 是 告 诉 ActionFroward就 代 表 跳 转 到 一 个 登 陆 成 功 的 页 面。ActionServlet将
4、对 之 进 行 分 析,其 实 就 相 当 于 接 收 到 一 个 新 的 请 求,重 复(2)(5)的 过 程,直 到 将 某 个 界 面 返 会 给 用 户 为 止!3 核 心 控 制 器 被 调 用,询 问 ActionMapper来 决 定 请 求 是 否 需 要 调 用 某 个 Action4、如 果 ActionMapper决 定 需 要 调 用 某 个 Action,核 心 控 制 器 把 控 制 权 委 派 给 Action Proxy(备 注:JSP请 求 无 需 调 用 Action)5、Actionproxy通 过 Configuration Manager询 问 框 架
5、 的 配 置.文 件(struts.xml),找 到 需 调 用 的 Action 类 6、Actionproxy 创 建 一 个 Actioninvocation 的 实 例 7 Actioninvocation负 责 调 用 A ction,在 此 之 前 会 依 次 调 用 所 有 配 置 的 拦 截 器 8、Action执 行 完 毕,Actioninvocation负 责 根 据 结 果 码 字 符 串 在 struts.xml的 配 置 中 找 到 对 应 的 返 回 结 果 9、拦 截 器 被 再 次 执 行 10、过 滤 器 被 再 次 执 行 3 Strutsl 与 Stru
6、ts2 的 区 别 特 性 S trutsl.x Struts2Action 类 S tru tsl.x要 求 A ction类 要 扩 展 自 一 个 抽 象 基 类。S tru tsl.x 的 一 个 共 有 的 问 题 是 面 向 抽 象 类 编 程 而 不 是 面 向 接 口 编 程。Struts2 的 Action 类 实 现 了 一 个 Action 接 口 o Struts2 也 提 供 ActionSupport 基 类 来 实 现 一 般 使 用 的 接 口。当 然,A ction接 口 不 是 必 须 的。任 何 使 用 execute方 法 的 PO JO可 以 被 当
7、作 S tru ts 2的 A ction对 象 来 使 用。线 程 模 型 S tru tsl.x A ction类 是 单 例 类,因 为 只 有 一 个 实 例 来 控 制 所 有 的 请 求。单 例 类 策 略 造 成 了 一 定 的 限 制,并 且 给 开 发 带 来 了 额 外 的 烦 恼。A ction资 源 必 须 是 线 程 安 全 或 者 同 步 的。Struts2 A ction对 象 为 每 一 个 请 求 都 实 例 化 对 象,所 以 没 有 线 程 安 全 的 问 题。(实 践 中,s e r v le t容 器 给 每 一 个 请 求 产 生 许 多 丢 弃 的
8、 对 象,并 且 不 会 导 致 性 能 和 垃 圾 回 收 问 题)。Servlet 依 赖 S tru tsl.x 的 Action 类 依 赖 于 serv let API,当 Action 被 调 用 时,以 Request 和 Response作 为 参 数 传 给 execute方 法。S tru ts 2的 A ction和 容 器 无 关。S e rv le t上 下 文 被 表 现 为 简 单 的 M ap s,允 许 A ction被 独 立 的 测 试。易 测 性 测 试 S tru tsl.x 的 主 要 问 题 是 execute方 法 暴 露 了 Servlet A
9、PI使 得 测 试 依 赖 于 容 器。第 三 方 扩 展,如 S tru ts T e stC a se,提 供 一 套 S l r u t s l的 模 拟 对 象(来 进 行 测 试)。S tru ts 2的 A ction可 以 通 过 初 始 化、设 置 属 性、调 用 方 法 来 测 试。依 赖 注 入 的 支 持 也 是 测 试 变 得 更 简 单。捕 获 输 入 S tru tsl.x 使 用 ActionForm对 象 来 捕 获 输 入。象 A ction一 样,所 有 的 ActionForm必 须 扩 展 基 类。因 为 其 他 的 JavaBean不 能 作 为 Ac
10、tionForm使 用,开 发 者 经 常 创 建 多 余 的 类 来 捕 获 输 入。DynaBeans可 以 被 用 来 作 为 替 代 ActionForm的 类 来 创 建。但 是,开 发 者 可 能 是 在 重 新 描 述(创 建)已 经 存 在 的 JavaBean(仍 然 会 导 致 有 冗 余 的 javabean)。S tru ts 2直 接 使 用 A ction属 性 作 为 输 入 属 性,消 除 了 对 第 二 个 输 入 对 象 的 需 求。输 入 属 性 可 能 是 有 自 己(子)属 性 的 r i c h对 象 类 型。A ction属 性 能 够 通 过 w
11、eb页 面 上 的 tag lib s 访 问。S truts2 也 支 持 ActionForm模 式。r i c h对 象 类 型,包 括 业 务 对 象,能 够 用 作 输 入/输 出 对 象。这 种 ModelDriven特 性 简 化 了 ta g lib对 POJO输 入 对 象 的 引 用。表 达 式 语 言 S tru tsl.x 整 合 JSTL,所 以 它 使 用 JSTL的 表 达 式 语 言。表 达 式 语 言 有 基 本 的 图 形 对 象 移 动,但 是 对 集 合 和 索 引 属 性 的 支 持 很 弱。S tru ts 2使 用 JSTL,但 是 也 支 持 一
12、 个 更 强 大 和 灵 活 的 表 达 式 语 言-Object GraphNotation Language7 7(O G N L)。将 值 绑 定 到 页 面 S tru tsl.x 使 用 标 准 JSP机 制 来 绑 定 对 象 到 页 面 上 下 文。Struts2 使 用“ValueStack”技 术,使 ta g lib能 够 访 问 值 而 不 需 要 把 你 的 页 面(v ie w)和 对 象 绑 定 起 来。ValueStack策 略 允 许 通 过 一 系 列 名 称 相 同 但 类 型 不 同 的 属 性 重 用 页 面(view)o类 型 转 换 S tru ts
13、l.x 的 ActionForm属 性 经 常 都 是 StringoStruts 1.x 使 用 Commons-Beanutils来 进 行 类 型 转 换。转 换 每 一 个 类,而 不 是 为 每 一 个 实 例 配 置。S truts2使 用 0GNL进 行 类 型 转 换。提 供 基 本 和 常 用 对 象 的 转 换 器。验 证 S tru tsl.x 支 持 在 ActionForm 的 validate方 法 中 手 动 校 验,或 者 通 过 C om m onsV a lid a to r的 扩 展 来 校 验。S tru ts2支 持 通 过 val id a te方
14、法 和 XW ork校 验 框 架 来 进 行 校 验。A ctio n执 行 控 制 S tru tsl.x 支 持 每 一 个 模 块 有 单 独 的 Request Processors(生 命 周 期),但 是 模 块 中 的 所 有 A ctio n必 须 共 享 相 同 的 生 命 周 期。S tru ts2支 持 通 过 拦 截 器 堆 栈(InterceptorS ta c k s)为 每 一 个 A ctio n创 建 不 同 的 生 命 周 期。堆 栈 能 够 根 据 需 要 和 不 同 的 Action一 起 使 用。4 Struts2中 拦 截 器 的 主 要 作 用、
15、工 作 原 理,如 何 自 定 义 拦 截 器 1.拦 截 器 的 主 要 作 用 早 期 MVC框 架 将 一 些 通 用 操 作 写 死 在 核 心 控 制 器 中,致 使 框 架 灵 活 性 不 足、可 扩 展 性 降 低;Struts2 将 核 心 功 能 放 到 多 个 拦 截 器 中 实 现,拦 截 器 可 自 由 选 择 和 组 合,增 强 了 灵 活 性,有 利 于 系 统 的 解 耦。为 Action提 供 附 加 功 能 时,无 需 修 改 Action代 码,使 用 拦 截 器 来 提 供。Struts 2 大 多 数 核 心 功 能 是 通 过 拦 截 器 实 现 的,
16、比 如 表 单 组 装、表 单 验 证、类 型 转 换、模 型 驱 动、Servlet对 象 注 入、文 件 上 传 等,每 个 拦 截 器 完 成 某 项 功 能。2.Struts2中 拦 截 器 的 工 作 原 理 拦 截 器 与 过 滤 器 原 理 很 相 似。三 阶 段 执 行 周 期:1、做 些 Action执 行 前 的 预 处 理;2、将 控 制 交 给 后 续 拦 截 器 或 返 回 结 果 字 符 串;3、做 一 些 Action执 行 后 的 处 理。多 个 拦 截 器 可 以 组 成 拦 截 器 栈 一 起 起 作 用。从 结 构 上 看,拦 截 器 栈 相 当 于 多
17、个 拦 截 器 的 组 合;在 功 能 上 看,拦 截 器 栈 也 是 拦 截 器 3.1自 定 义 拦 截 器 的 方 法 唠 实 现 Interceptor接 口 簿 void init():初 始 化 拦 截 器 所 需 资 源 送 void destroyf):释 放 在 init()中 分 配 的 资 源 String intercept(Actionlnvocation ai)throws Exception 实 现 拦 截 器 功 能 利 用 Actioninvocation参 数 获 取 Action状 态 返 回 结 果 码(resu lt)字 符 串 尊 继 承 Abstr
18、actlnterceptor 类,提 供 了 init()和 destroy。方 法 的 空 实 现,只 需 要 实 现 intercept方 法 即 可 解 推 荐 使 用 心 继 承 MethodFilterlnterceptor 指 定 拦 截 的 方 法:indudeMethods籍 指 定 不 拦 截 的 方 法:excludeMethods3.2配 置 和 引 用 拦 截 器 配 置 拦 截 器 一!配 置 拦 截 器 栈 一 interceptor-ref name=defaultStack/!配 置 默 认 拦 截 器/success.j sp/error.jsp5 拦 截 器
19、 和 过 滤 器 的 异 同 1、过 滤 器 是 w eb项 目 的 普 遍 概 念,而 拦 截 器 是 struts2中 的 特 有 概 念 2、过 滤 器 可 以 过 滤 所 有 请 求,拦 截 器 只 拦 截 action请 求 3、自 定 义 过 滤 器 需 要 实 现 Filter接 口,而 自 定 义 拦 截 器 可 以 实 现 Interceptor接 口 4、在 w eb.xm l中 配 置 过 滤 器,在 struts.xm l中 配 置 拦 截 器 5、拦 截 器 可 以 访 问 Servlet API、ActionContext 值 栈,而 过 滤 器 只 能 访 问 S
20、ervlet API6、使 用 通 配 符 来 定 义 过 滤 器 的 过 滤 路 径,过 滤 的 是 地 址。通 过 为 Action指 定 拦 截 器 来 调 用 拦 截 器,拦 截 器 可 以 细 化 到 方 法 层 次。7、在 Struts2项 目 中 如 果 使 用 过 滤 器,一 般 应 该 将 过 滤 器 置 于 Struts2总 控 制 器 之 前 8、执 行 顺 序:过 滤 器 一 拦 截 器 一 Action-拦 截 器 一 过 滤 器(过 滤 器 靠 前)9、拦 截 器 是 基 于 ja v a的 反 射 机 制 的,而 过 滤 器 是 基 于 函 数 回 调(待 确 认
21、)6 Hibernate相 比 JD B C的 优 势 所 在 二 者 的 联 系:JD B C是 ja v a应 用 程 序 连 接 数 据 库,进 行 数 据 存 取 的 一 种 机 制,是 一 组 用 ja v a语 言 编 写 的 类 和 接 口 的 A P I,它 和 数 据 库 之 间 由 各 个 厂 商 提 供 的 数 据 库 驱 动 进 行 关 联。hibernate是 一 个 开 源 的 轻 量 级 的 ORM框 架,它 在 底 层 对 jd b c进 行 了 封 装。Hibernate可 以 用 在 任 何 JD B C可 以 使 用 的 场 合 优 点:1、hiberna
22、te可 以 让 开 发 人 员 以 面 相 对 象 的 思 想 来 操 作 数 据 库。jd b c只 能 通 过 S Q L语 句 将 元 数 据 传 送 给 数 据 库,进 行 数 据 操 作。而 hibernate可 以 在 底 层 对 元 数 据 和 对 象 进 行 转 化,使 得 开 发 者 只 用 面向 对 象 的 方 式 来 存 取 数 据 即 可。2、使 用 的 语 言 不 同:JDBC使 用 基 于 关 系 型 数 据 库 的 标 准 SQ L语 言,Hibernate使 用 的 是 HQL语 言 3,操 作 的 对 象 不 同:JDBC通 过 SQ L语 句 直 接 传 送
23、 到 数 据 库 中 执 行,Hibernate操 作 的 是 持 久 化 对 象,由 底 层 持 久 化 对 象 的 数 据 更 新 到 数 据 库 中。4、hibernate开 发 的 程 序 具 有 更 好 的 移 植 性,hibernate使 用 xm l或 JP A的 配 置 以 及 数 据 库 方 言 等 等 的 机 制,使 得 hibernate具 有 更 好 的 移 植 性,对 于 不 同 的 数 据 库,开 发 者 只 需 要 使 用 相 同 的 数 据 操 作 即 可,无 需 关 心 数 据 库 之 间 的 差 异。而 直 接 使 用 JDBC就 不 得 不 考 虑 数 据
24、 库 差 异 的 问 题。5、使 用 Hibernate极 大 的 提 高 了 开 发 者 的 开 发 效 率。hibernate提 供 了 大 量 的 封 装(这 也 是 它 最 大 的 缺 点),很 多 数 据 操 作 以 及 关 联 关 系 等 都 被 封 装 的 很 好,开 发 者 不 需 写 大 量 的 sq l语 句,这 就 极 大 的 提 高 了 开 发 者 的 开 发 效 率。6,Hibernate缓 存 机 制 对 提 升 性 能 大 有 裨 益。hibernate提 供 了 缓 存 机 制(session缓 存,二 级 缓 存,查 询 缓 存),对 于 那 些 改 动 不
25、大 且 经 常 使 用 的 数 据,可 以 将 它 们 放 到 缓 存 中,不 必 在 每 次 使 用 时 都 去 查 询 数 据 库,缓 存 机 制 对 提 升 性 能 大 有 裨 益。缺 点:1、从 理 论 上 来 说,ORM永 远 也 不 可 能 比 JDBC好,就 像 任 何 高 级 语 言 的 运 行 性 能 永 远 也 不 会 好 过 汇 编 语 言 一 个 道 理。但 从 这 个 角 度 讲,精 心 编 写 的 JDBC无 论 如 何 都 是 最 快 的。2、hibernate更 消 耗 内 存。因 为 它 每 次 的 数 据 库 操 作 都 要 做 数 据 和 对 象 的 转
26、换/封 装,查 询 出 一 条 数 据 就 要 创 建 一 个 或 多 个 对 象,这 样 也 太 消 耗 内 存 了。3,对 hibernate而 言,它 对 JDBC封 装 过 于 厉 害,所 以 就 失 去 了 对 SQ L的 控 制(当 然 hibernate也 可 以 使 用 native s q l既 使 用 createSQLQuery等 方 法 来 调 用 与 数 据 库 相 关 的 sql,但 这 样 一 来 也 就 影 响 了 hibernate的 可 移 植 性),使 得 hibernate的 在 很 多 地 方 不 够 灵 活,难 于 优 化,尤 其 对 于 一 些 复
27、 杂 的 关 联 查 询 时,hibernate提 供 的 功 能 远 不 及 直 接 使 用 JDBC方 便 性 能 更 高。7 Hibenate的 基 本 原 理(ORM)ApplicationPersistent Objects|Hibernate-7 产 X M.M g p p.n sDatabaseHibenate的 核 心 是 ORM映 射。hibernate通 过 对 jdbc进 行 封 装,对 java类 和 关 系 数 据 库 进 行 mapping,实 现 了 对 关 系 数 据 库 的 面 向 对 象 方 式 的 操 作,改 变 了 传 统 的 jdbc+sq l操 作
28、数 据 的 方 式,从 而 使 开 发 人 员 可 以 花 更 多 精 力 进 行 对 象 方 面 的 开 发。8 cascade 和 inverse 的 区 别 inverse和 cascade两 者 之 间 没 有 任 何 关 系。但 是 它 们 又 都 能 影 响 对 象 关 联 关 系 的 维 护,所 以 将 这 两 个 属 性 的 作 用 区 分 开 也 不 是 很 容 易 的。inverse和 cascade的 区 别 主 要 表 现 在 以 下 几 个 方 面:作 用 的 范 围 不 同 inverse是 设 置 在 集 合 元 素 中 的,而 对 于 many-to-one 和
29、 one-to-one 则 无 此 属 性。而 cascade则对 于 所 有 涉 及 到 关 联 的 元 素 都 是 有 效 的,其 中 包 括 了 集 合 元 素 以 及 many-to-one:n 执 行 的 策 略 不 同 inverse会 首 先 判 断 集 合 的 变 化 情 况,然 后 针 对 变 化 执 行 相 应 的 处 理。而 cascade则 是 直 接 对 集 合 的 每 个 元 素 执 行 相 应 的 处 理。执 行 的 时 机 不 同 inverse是 在 执 行 S Q L语 句 之 前 判 断 是 否 要 执 行 该 S Q L语 句,而 cascade则 是
30、在 主 控 方 发 生 操 作 时 用 来 判 断 是 否 进 行 级 联 操 作。执 行 的 目 标 不 同 inverse XJF#d:/?-ffi|S|对 于,inverse 所 处 理 的 是 对 被 关 联 表(的 外 键)进 行 修 改 操 作。对 于,inve rse所 处 理 则 是 中 间 关 联 表(增 减 记 录)。而 cascade则 不 会 区 分 这 两 种 关 系 的 差 别,所 做 的 操 作 都 是 针 对 被 关 联 表 的。9 H Q L和 S Q L的 区 别 1.操 作 对 象 不 同:H Q L操 作 的 类 及 其 属 性,SQ L操 作 的 是
31、数 据 库 表 及 其 字 段 2.相 比 SQ L语 句,H Q L有 所 简 化 3.H Q L结 果 直 接 返 回 List或 其 他 对 象,而 不 是 像 JD B C中 使 用 SQ L返 回 结 果 集,还 要 转 化 成 对 象。4.不 同 数 据 库 的 S Q L语 句 会 有 细 微 差 别,H Q L独 立 于 数 据 库,根 据 方 言 设 置 转 换 为 对 应 的 S Q L语 句 10 如 何 提 高 Hibernate的 性 能 1.配 盘 数 据 源 2.使 用 延 迟 加 载 3.使 用 二 级 缓 存、查 询 缓 存 4.对 H Q L语 句 的 优
32、化:避 免 or、not、like having distinct等 操 作 5.映 射 文 件 配 置 参 数:fetch-size,fetch,batch-size6.操 作 方 法 使 用:比 如 lo ad和 get,list和 iterate等 11 Hibernate中 持 久 化 类 的 三 种 状 态 及 其 特 征 瞬 时 状 态 特 征:不 在 Session缓 存 中,不 与 任 何 Session实 例 相 关 联;在 数 据 库 中 没 有 与 之 对 应 数 据。持 久 化 状 态 特 征:在 Session缓 存 中,与 Session实 例 相 关 联;在 数
33、据 库 中 有 与 之 对 应 的 数 据。脱 管 状 态 特 征:不 在 Session缓 存 中,不 与 任 何 Session实 例 相 关 联;在 数 据 库 中 有 与 之 对 应 数 据。Hibernate会 检 测 到 处 于 持 久 状 态 的 对 象 的 任 何 改 动,在 当 前 操 作 单 元 执 行 完 毕 时 将 对 象 的 状 态 同 步 到 数 据 库,开 发 者 不 需 要 手 动 执 行 update。语 句。多 次 save。是 多 余 的。Spring lo C的 原 理 Test javaBeanFactory factory,newClassPat h
34、X m lA pp i icat ionContext|app1icat ionCont ext.xtt 1|;Cork Mork iV orJc)factorynetB ean(woric*);u 二 如 酢 天 案 化,惨 堀 道 文 件 胴 applicat ionContexthean id=,man,T clas3=*c:n.bsY.s pr ing.dao.YoXan/(property naie person refanV!bean id,g d t c 1 assBcn.bsv.spring.m jr.HihWork:property twuwjierscn re!*vw n/
35、:.采 用 loC之 前 采 用 loC之 后 采 用 loC之 前,对 象 的 创 建 以 及 对 象 关 系 的 维 护 都 要 由 程 序 员 通 过 硬 编 码 的 形 式 来 维 护。采 用 loC后,对 象 的 创 建 以 及 对 象 关 系 的 维 护 将 由 lo C容 器 来 实 现,维 护 的 依 据 是 配 置 文 件,程 序 员 直 接 从 容 器 中 取 对 象 就 可 以 了.13 Spring AOP 的 原 理 采 用 AOP之 前 匕 采 用 AOP之 后 A O P,面 向 切 面 编 程,是 一 种 编 程 方 法,它 和 面 向 对 象 编 程 采 用
36、的 顺 序(纵 向)编 程 形 成 互 补,可 以 解 决 一 些 在 O O P中 无 法 或 很 难 解 决 的 问 题,例 如 事 务、日 志、权 限 等 横 切 性 问 题,使 得 O O P集 中 精 力 于 业 务 逻 辑 编 程。O O P实 现 横 切 性 关 注 点 导 致 代 码 混 乱,开 发 者 必 须 同 时 考 虑 业 务 逻 辑、性 能、日 志、安 全 等 问 题。代 码 分 散,横 切 性 代 码 散 布 在 各 个 模 块 中。AOP将 这 些 代 码 模 块 化,然 后 织 入 到 需 要 的 模 块 中。过 滤 器,拦 截 器 都 可 以 理 解 为 一
37、种 AOP技 术。14 AO P的 基 本 概 念:切 面、通 知、切 入 点、连 接 点、织 入 1.切 面(Aspect):从 对 象 中 抽 取 出 来 的 横 切 性 功 能 模 块。类 似 与 O O P中 的 一 个 类。由 通 知 和 切 入 点 两 部 分 组 成。2.通 知(Adivice):切 面 的 具 体 实 现,例 如 具 体 的 日 志 操 作 代 码,一 般 是 是 切 面 中 的 某 个 方 法。3.连 接 点(Joinpoint):目 标 对 象 中 插 入 通 知 的 地 方。即 advice的 应 用 位 置。spring中 只 支 持 是 方 法 4.切
38、 入 点(Pointcut):切 面 的 一 部 分,对 应 一 个 表 达 式,定 义 了 a d v ice应 该 被 插 入 到 什 么 样 的 Joinpoint点 上,即 advice的 应 用 范 围 5.目 标 对 象(Target Object):被 通 知 的 对 象。6.代 理(AOP Proxy):由 AO P框 架 创 建 的 口 标 对 象 的 代 理 对 象 是 被 插 入 了 advice的 Target O b je c t。7.织 入(W eaving):将 通 知 与 目 标 对 象 结 合 在 一 起,生 成 新 的 对 象 的 过 程。新 的 对 象 就
39、 是 AOPProxy o Spring是 在 运 行 是 完 成 织 入 工 作 的。15 SSH整 合 的 基 本 步 骤 1、Spring 向 下 整 合 Hibernate(DAO 层)1.1 使 用 Spring 的 loC 容 器 创 建 sessionFactory1.2 使 用 Spring的 lo C容 器 创 建 DAO2、Spring中 间 管 理 业 务 层 2.1 使 用 Spring的 lo C容 器 创 建 Biz Bean2.2 使 用 Spring的 A O P配 置 业 务 层 事 务 3、Spring向 上 整 合 Struts2(控 制 层)3.1 配
40、置 监 听 器 和 上 下 文 参 数 3.2 使 用 Spring的 lo C容 器 来 管 理 Action4、其 他 4.1 使 用 Spring提 供 的 过 滤 器 解 决 中 文 乱 码 问 题 4.2 使 用 Spring提 供 的 OpenSessionlnViewFilter解 决 懒 加 载 问 题 4.3 使 用 Spring的 lo C容 器 管 理 数 据 源 16 并 行 操 作 下 数 据 库 事 务 出 现 的 问 题 及 含 义:事 务 的 隔 离 级 别 和 四 大 属 性 1、并 行 操 作 下 数 据 库 事 务 出 现 的 问 题:脏 读(Dirty
41、read):脏 读 发 生 在 一 个 事 务 读 取 了 被 另 一 个 事 务 改 写 但 还 未 提 交 的 数 据 时.如 果 这 些 改 变 在 稍 后 被 1 日 滚,那 么 第 个 事 务 读 取 的 数 据 就 是 无 效 的.不 可 重 复 读(Nonrepeatable read):不 可 重 复 读 发 生 在 一 个 事 务 执 行 相 同 的 查 询 两 次 或 两 次 以 上,但 每 一 次 查 询 结 果 都 不 相 同.这 通 常 是 由 于 另 一 个 并 发 事 务 在 两 次 查 询 之 间 更 新 了 数 据.幻 读(Phantom read):幻 读
42、和 不 可 重 复 读 相 似.当 一 个 事 务(T1)读 取 几 行 纪 录 后,另 一 个 并 发 事 务(T2)插 入 一 些 数 据,幻 读 就 发 生 了.在 后 来 的 查 询 中,第 一 个 事 务(T1)就 会 发 现 一 些 原 来 没 有 的 额 外 纪 录.2、事 务 的 隔 离 级 别 READ_UNCOMMITTED允 许 你 读 取 还 未 提 交 的 改 变 了 的 数 据.可 能 导 致 脏 读,幻 读 或 不 可 重 复 读.READ_COMM ITTED允 许 在 并 发 事 务 已 经 提 交 后 读 取,可 防 止 脏 读,但 幻 读 和 不 可 重
43、复 读 仍 可 能 发 生.REPEATABLE_READ对 相 同 字 段 的 多 次 读 取 结 果 是 一 致 的,除 非 数 据 被 事 务 本 身 改 变.可 防 止 脏 读 和 不 可 重 复 读,但 幻 读 仍 可 能 发 生.SERIALIZABLE完 全 服 从 A C ID的 隔 离 级 别,确 保 不 发 生 脏 读,不 可 重 复 读 和 幻 读.这 在 所 有 隔 离 级 别 中 也 是 最 慢 的,因 为 它 是 通 过 完 全 锁 定 在 事 务 中 涉 及 的 数 据 表 来 完 成 的.3,事 务 的 四 大 属 性 设 置 事 务 的 传 播 特 性 PRO
44、PAGATION:REQ UIRED:如 果 存 在 一 个 事 务,则 支 持 当 前 事 务。如 果 没 有 事 务 则 开 启。SU PPO RTS:如 果 存 在 一 个 事 务,支 持 当 前 事 务。如 果 没 有 事 务,则 非 事 务 的 执 行。只 读 特 性 readonly=true 只 读 事 务。如 果 一 个 事 务 只 对 数 据 库 执 行 读 操 作,设 为 只 读 事 务 可 以 提 高 效 率 隔 离 级 别 特 性 isolation=DEFAULT 事 务 的 隔 离 级 别。并 行 情 况 下 保 证 事 务 的 完 整 性。超 时 特 性 time
45、out=-l 事 务 的 超 时 时 间。超 时 则 事 务 回 滚。17 J S P的 执 行 过 程 在 JS P运 行 过 程 中,首 先 由 客 户 端 发 出 请 求,W eb服 务 器 接 收 到 请 求 后,如 果 是 第 一 次 访 问 某 个 jsp页 面,W eb服 务 器 对 它 进 行 以 下 3 个 操 作。1.翻 译:由 J s p变 为.java,由 J S P引 擎 实 现。2.编 译:由.java变 为.class,由 Java编 译 器 实 现。3.执 行:由.class变 为.html,用 Ja v a虚 拟 机 执 行 编 译 文 件,然 后 将 执 行
46、 结 果 返 回 给 W e b服 务 器,并 最 终 返 回 给 客 户 端 如 果 不 是 第 一 次 访 问 某 个 JS P页 面,则 只 执 行 第 三 步。所 以 第 一 次 访 问 JS P较 慢。18 JS P和 Servlet的 区 别 和 联 系 区 别 1.JS P是 在 HTM L代 码 里 写 JAVA代 码,框 架 是 HTML;而 Servlet是 在 JAVA代 码 中 写 HTM L代 码,本 身 是 个 JAVA类。2.JS P使 人 们 把 显 示 和 逻 辑 分 隔 成 为 可 能,这 意 味 着 两 者 的 开 发 可 并 行 进 行;而 Servle
47、t并 没 有 把 两 者 分 开。3.S e rv le t独 立 地 处 理 静 态 表 示 逻 辑 与 动 态 业 务 逻 辑.这 样,任 何 文 件 的 变 动 都 需 要 对 此 服 务 程 序 重 新 编 译;J S P允 许 用 特 殊 标 签 直 接 嵌 入 到 H TM L页 面,H T M L内 容 与 JA V A内 容 也 可 放 在 单 独 文 件 中,H TM L内 容 的 任 何 变 动 会 自 动 编 译 装 入 到 服 务 程 序.4.Servlet需 要 在 web.xm l中 配 置,而 JS P无 需 配 置。5.目 前 JS P主 要 用 在 视 图 层
48、,负 责 显 示,而 Servlet主 要 用 在 控 制 层,负 责 调 度 联 系:都 是 S u n公 司 推 出 的 动 态 网 页 技 术,先 有 S e r v le t,针 对 Servlet缺 点 推 出 JSP。J S P是 Servlet的,一 种 特 殊 形 式,每 个 JS P页 面 就 是 一 个 Servlet实 例-JS P页 面 由 系 统 翻 译 成 Servlet,Servlet再 负 责 响 应 用 户 请 求。19 J S P的 9 个 内 置 对 象 及 其 含 义,分 别 写 出 其 常 用 方 法 三 个常 用 方 法 略 内 部 对 象 所 属
49、类 型 川 途 烟 U酶 javax.servlet.httpServletRequest 包 含 请 求 方 的 信 息 骨 的 n躁 javax.servlet.httpServletResponse 封 装 了 对 客 户 端 的 响 应 out javax.servlet.jsp.JspWriter 响 应 信 息 流 的 标 准 输 出 法 蹴 然 檄 门 javax.servlet.Http.HttpSession在 同 请 求 中 所 产 牛:的 session资 料,”前 只 对 Http协 议 有 定 义 application javax.servlet.ServletCo
50、ntext 提 供 安 全 信 息 config javax.servlet.ServletConfig 提 供 配 置 信 息 pageContext javax.servlet.jsp.PageContext 提 供 当 前 页 面 属 性 page java.lang.Object|H J J java的 thisexception java.Iang.Throwable 异 常 处 理 20 page/request/session/application 的 范 围 区 别 page:当 前 页 面 范 围 request:当 前 页 面 范 围+转 发 页 面(forward)+包