Java面试100题参考答案.pdf
《Java面试100题参考答案.pdf》由会员分享,可在线阅读,更多相关《Java面试100题参考答案.pdf(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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更 消 耗 内 存。因 为 它 每 次 的 数 据 库 操 作 都 要 做 数 据 和 对 象 的 转
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面试 100 参考答案
限制150内