




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大庆师范学院 毕 业 设 计 论 文 题 目 网络论坛的设计与实现 下达日期 年 月 日 设计时间自 年 月 日至 年 月 日 摘要摘要 在 Internet 飞速发展的今天 互联网成为人们快速获取 发布和传递信息的重 要渠道 它在人们政治 经济 生活等各个方面发挥着重要的作用 Internet 上发 布信息主要是通过网站来实现的 获取信息也是要在 Internet 海洋 中按照一定的 检索方式将所需要的信息从网站上下载下来 因此网站建设在 Internet 应用上的 地位显而易见 它已成为政府 企事业单位信息化建设中的重要组成部分 从而 倍受人们的重视 论坛 BBS 是一般网站必备的功能 是网站的用户进行交 流的重要途径 本文分析了论坛的总体设计思想 对其各模块实现的功能及实 现方法进行了详细地介绍 该论坛采用 JSP Java Server Page 编写并基于 access 数据库 由于把论坛中连接数据库模块合理地分割成三个部分来实现 当数据库有所改变时 只需修改配置文件中的参数值即可 无须重新编译 这 样就使系统结构变得简单清晰 同时也提高了程序的可维护性 系统规模越大 这种形态的优点就越显著 本文中所做的主要工作如下 1 介绍课题的背景和相关技术 2 分析论坛的总体设计 3 详述论坛各功能模块的实现方法 4 提出论坛存在的不足及改进方案 关键字关键字 网站 论坛 数据库 JSP 目 录 1 课题背景 3 2 背景知识及技术 5 2 1 中间件技术 5 2 2 构件技术与中间件 8 2 3 JDBC 简介 11 2 4 JDBC 驱动程序 12 2 5 JSP 中有关中文处理的问题 15 3 论坛总体分析与设计 19 3 1 开发工具的选用与介绍 19 3 2 系统的运行环境 20 3 3 论坛各模块划分及功能 21 3 4 数据库结构设计 21 4 论坛的详细设计及实现 23 4 1 公共模块 23 4 2 用户模块 28 4 3 管理模块 31 4 4 聊天室模块 32 4 5 其他文件 34 5 总结 35 5 1 论坛的实现情况 35 5 2 存在的问题及改进方向 35 参考文献 36 致 谢 38 Abstract Today internet is growing like a weed Internet has become the main way to receive issue and transfer the messages as soon as possible It plays the most important role in many fields such as politics economic and life The release of the message in the internet is in the way of web station The receive of the messages is also downloaded from the webstation by a certain search way from the sea of internet As a result the role of the build of webstation is obvious The build of webstation has become a important part of the information struction of governments and enterprises Froum is the indispensable part of a webstation what is the main way of the communication among the users This page tries to analyse the general design idea of the forum and introduces in detail the function of each module and the implement The forum writes in JSP java server page and uses Access database As the result of devide the database module into three parts when the database changes not compile repeatly but need modifying the corresponding parameters in the configure files It can make the structure of the system simple and improve the maintain of the system in the same time The bigger the scale of the system the more remarkable the power of the system The main contribution of this paper are 1 Introduce the background and technologies of the task 2 Analyses the general design of the forum 3 Explicate the implement of each module 4 The merits of the forum and idea about how to improve it KeyKey WordWord website forum database JSP 第一章第一章 课题背景课题背景 XX 论坛网站管理系统是为提高 XX 论坛上信息办公发布自动化的效率而做的 为了进一 步加强该网站的功能 使网站的用户可以方便地进行交流 提高用户的工作效率 本人为该 网站开发了这一论坛系统 XX 论坛网站管理系统的业务管理的主要对象为网站的各个栏目下的信息发布 主要业 务包括网站新闻的提交 编辑 审核 删除 统计 以及网站频道和栏目的建设 根据业务需求 本系统按照功能可以划分成系统管理 模板系统 后台发布 前台发布 报表管理 认证管理和论坛管理七个主要的功能块 系统整体功能结构如下图 XX 论坛管理系统 系 统 管 理 模块 管理 后台 发布 管理 前台 发布 管理 报表 管理 认证 管理 论坛 管理 帐 号 管 理 栏 目 管 理 元 数 据 管 理 信 息 采 集 内 容 编 辑 内 容 审 核 图 1 系统整体功能结构图 系统整体流程图 用户登录 身份验证 权限分配 系统管理后台发布模板管理报表管理认证管理论坛管理 图 2 系统整体流程图 系统管理 本模块包括帐号管理 栏目管理 数据库的管理 后台发布 本模块主要是为方便编辑稿件人员能够直接编辑稿件而设计实现的 这部分 从各个角度为编辑人员提供各种稿件处理功能 报表管理 数据采集部分要完成广电总局政府网站的数据报送部分的功能 要为人事 注册管理 资格认证注册 招标采购栏目和资料报送频道制作 管理 生成报表 管 理员在完成报表的后期制作之后 由发布系统将报表发布到前台页面 供会员用户使 用 认证管理 主要负责认证栏目中认证表格的生成 数据的录入 修改 删除等维护工 作以及认证表格页面的生成和发布 论坛管理 本模块主要是为方便论坛管理者能够直接管理论坛而设计实现的 包括公告 管理 论坛管理和用户管理 前台发布 前台模块是对外的一个窗口 单位内部的消息通过前台模块展示出来 用 户可以通过浏览前台模块看单位的内部新闻和其他信息 通过采编发后的文章也通过 前台模块发布出来 供最终用户浏览查询 对于某些统计报表 只有网站的注册用户 并且管理员授权后才能查看 其他的人员无权浏览 前台模块是网站的管理者和维护者与网站的最终浏览用户的接口 所有前台的网页都是 通过网页模板定制完成的 这样前台的内容可以和容易的更换显示页面和显示风格 这些网 前台发布 页在网站的管理者创建或者修改网站的结构时生成 作为静态网页保存在服务器的某个目录 中 目录的存放位置可以根据网站的配置文件的内容而定 确保生成的页面是静态的 这 样可以减轻后台数据库的负担 并提高网站对于用户请求的响应能力 第二章第二章 背景知识及技术背景知识及技术 第一节第一节 中间件技术中间件技术 中间件是在计算机硬件和操作系统之上 支持应用软件开发和运行的系统软件 它 能够使应用软件相对独立于计算机硬件和操作系统平台 为当今的大型分布式应用搭起 了一个标准的平台 把大型企业分散的系统和技术组合在一起 实现大型企业应用软件 系统的集成 中间件具有标准的程序接口和协议 可以实现不同硬件和操作系统平台上的数据共 享和应用互操作 在具体实现上 中间件是一个用 API 定义的分布式软件管理框架 具 有强大的通信能力和良好的可扩展性 从理论上讲 中间件有以下的工作机制 客户端上的应用程序需要从网络中的某个 地方获取一定的数据或服务 这些数据或服务可能处于一个运行着不同操作系统和特定 查询语言数据库的服务器中 客户 服务器应用程序中负责寻找数据的部分只需访问一个 中间件系统 由中间件完成到网络中找到数据源或服务 进而传输客户请求 重组答复 信息 最后将结果送回应用程序的任务 中间件 服务器 服务器 服务器 客户机 客户机 客户机 图 3 中间件工作原理 传统的客户 服务器模式是一种双层的结构 通常是一台个人计算机做客户机使用 运 行客户端程序 另外一台服务器用于存放后台的数据库系统 应用程序和客户端直接 相连 中间没有其他的逻辑 程序的业务逻辑则一般存在于前台的应用程序中 即程 序员根据客户的业务要求定制客户端程序 这种定制的程序没有通用性 或者业务逻 辑也存在于后台数据库中 以触发器 trigger 的方式实现 这种方式有一个很大的缺点 就是一旦客户的业务逻辑有所改变的话 将引起应用程序的修改以及后台触发器的修 改 将所有程序模块都重新修改 编译 连接的工作量是相当大的 另外由于这种结 构将用户界面和业务逻辑以及数据源绑定在一起 会消耗客户机的大量资源 对客户 机来说是一个很大的负担 为了克服由于传统客户 服务器模型的这些缺陷给系统应用带来的影响 一种新的 结构出现了 这就是三层 N 层 客户 服务器模型 三层客户 服务器结构构建了一种 分割式的应用程序 系统对应用程序进行分割后 划分成不同的逻辑组件 主要分为 三层 用户服务层 提供信息浏览 服务定位 主要是实现用户界面 并保证用户界面 的友好性 统一性 业务处理层 实现客户的全部业务逻辑 数据服务层 实现数据定义 存储 备份 检索等功能 主要有数据库系统实现 这三个层次共同组成应用系统 使用这种模型 可以将系统需求划分成可以明确 定义的服务 例如事务服务 名字服务等 将这些服务以组件的形式实现 一个组件 可以实现系统中的一种或者多种服务 是这些服务的物理封装 根据系统的功能 性 能等各方面的需求 系统管理员可以在网络上灵活的部署这些组件 并且根据业务的 改动可以灵活的对这些服务组件进行修改 而不影响其它的组件 从而降低维护的费 用 另外 这些组件应该做成通用的 基于某一标准接口的 所以它们可以被重用 其他应用程序可以使用它们提供的应用程序接口调用组件 完成所需的操作 这就是基于 ORB 的中间件模型 这种模型完全克服了传统的客户 服务器模型的缺 点 具有可重用性 灵活性 可管理性 易维护性等一系列优良的特性 基于 ORB 的中间件模型虽然在性能上非常优异 但是目前在国内的应用远远没有 达到普及的程度 应用最广泛的是基于 Web 数据库的中间件技术 数据库中间件的工 作原理示意图如下 客户端 中间件 数据库 图 4 数据库中间件的工作原理 数据库中间件连接客户端程序 通常是应用程序 和数据库 为用户提供可靠便捷的数据 库访问 举一个简单的例子 在一个局域网环境下 使用 Delphi 编写客户端应用程序 后 台数据库使用 Ms NT4 SQL Server 在 Delphi 中 通过 ODBC 或者 BDE 连接到后台数据 库 在此 ODBC 就是一种标准的数据库中间件 它是 Windows 操作系统自带的服务 BDE Borland Database Engine 不是中间件 因为程序员虽然可以通过 BDE 和后台数据 库相连 但是实际上 BDE 还是要通过 ODBC 的 后面提到的 Web 环境下的 JDBC 和 ODBC 类似 也是操作系统提供的标准数据库中间件 这是一种传统的结构 这种结构有很多不足之处 例如有很 胖 的客户端 从而造成 系统的可扩展性差等 我们要重点介绍的是基于 Web 的数据库中间件 下面是它的工作 原理图 浏览器 Internet Web 服 务器 中间件 数据库 图 5 Web 数据库中间件工作原理 这是目前得到广泛应用的一种标准结构 在这种结构中 用户使用标准的浏览器 如微 软公司的 IE 通过 Internet 和 http 协议访问服务方提供的 Web 服务器 Web 服务器分析用户 浏览器提出的请求 如果是页面请求 则直接用 http 协议向用户返回要浏览的页面 如果有 数据库查询操作的请求 当然也包括修改 添加记录等 则将这个需求传递给 Web 服务器 和数据库之间的中间件 这个中间件当然不是 odbc 了 由中间件再向数据库系统提出操作请 求 得到结果后再返回给 Web 服务器 Web 服务器把数据库操作的结果形成 html 页面 再 返回给浏览器 第二节第二节 构件技术与中间件构件技术与中间件 网络计算带领软件产业进入了一个新的时代 商机无限 但同时挑战也无限 以电子商 务为代表的技术潮流正将大到企业计算 小到个人数字代理的各种应用 在世界范围内联结 起来 软件制造业正面临着一些新的课题 如复杂的分布环境 灵活的应用模式 广泛的包 容性等 传统的软件设计思想已远远不够 在这一背景下 构件技术应运而生 并逐渐炙手可热 不同于 OO 强调个体的抽象 构 件则更推广了对象封装的内涵 侧重于复杂系统中组成部分的协调关系 强调实体在环境中 的存在形式 形成一个专门的技术领域 中间件作为存在于系统软件与应用之间的特殊层次 抽象了典型的应用模式 从而使应 用软件制造者可以更多地将思路放在业务逻辑中 并基于标准的形式进行开发 这样就使软 件构架化成为可能 一些工业标准的推出 进一步使中间件成为可复用构件的运行框架 加 速了软件复用的现实化进程 中间件 构件存在的基础中间件 构件存在的基础 构件技术在最初时更多是作为一种思想存在 进而才在一些关键的环节上发展出解决问 题的技术分支 构件的存在在某种程度上极大地依赖了构架技术 或环境 基础设施 计算 平台 只有在适当的构架中 软件才有可能被抽象和隔离 最终成为构件 因此 单独讨论 构件是抽象而空洞的 构架不是操作系统 数据库或网络协议 也不完全是应用 而是在某 种特定意义上的构件运行容器 层次上界于应用和基础设施之间 中间件 从本质上是对分布式应用的抽象 因而抛开了与应用相关的业务逻辑的细节 保留了典型的分布交互模式的关键特征 经过抽象 将纷繁复杂的分布式系统经过提炼和必 要的隔离后 以统一的层面形式呈现给应用 应用在中间件提供的环境中可以更好地集中于 业务逻辑上 并以构件化的形式存在 最终自然而然地在异构环境中实现良好的协同工作 不难看出 中间件与构架实际是从两种不同的角度看待软件的中间层次 可以这样说 中间件就是构架 或构件模型的具体实现 是构件软件存在的基础 中间件促进了构件化软 件 从下面列举的一些中间件的特征 可以看出 中间件与构架本质上是一致的 面向需求的构件应用面向需求的构件应用 基于构架的构件化软件开发应当是面向需求的 即设计者集中精力于业务逻辑本身 而 不必为分布式应用中的通信 效率 互操作 可靠性 容错性 完整性等大量与业务无直接 关系但又非常重要的问题 而耗费大量的精力 理想的构架在这些方面应当为构件软件提供 良好的运行环境 事实上 这些正是中间件所要解决的问题 因此 基于中间件开发的应用 真正是面向需求的 从本质上符合构件化设计的思想 使业务逻辑容易划分使业务逻辑容易划分 服务器构件要求有很好的业务自包容性 应用开发者可以按照不同的业务进行功能的划 分 体现为不同的接口或交互模式 针对每种业务的设计和开发是可以独立进行的 构架和中间件有同样的目标 提供业务的分隔和包容性 例如 消息中间件规定了消息 是有属性的 其中部分属性则与业务的划分有关 某种服务构件只进行相应类型的消息交互 至于如何保证业务的分类运行与管理 则是中间件的事情 因此可以说 中间件和构架都实现了构件向应用的集成 构件的封装 设计与实现隔离构件的封装 设计与实现隔离 构件对外发生作用或构件间的交互 都是通过规范定义的接口进行 构件使用者只需要 知道构件的接口 而不关心其内部实现 这是设计与实现分开的关键 构架就应当提供构件 交互的规则 并基于这些规则实现类似容器的标准环境 中间件在分布交互模式上都规定了接口 或类似 机制 如 IDL 就是描述接口的语言规 范 从早期的 DCE 到现在的 CORBA DCOM Java RMI 等都使用 IDL 描述接口 所不同的只是 语言规范 客户访问服务 或对象方法 均通过接口进行 至于服务采用怎样的内部实现 基于怎样的语言 甚至怎样的操作系统 数据库 开发者都不用关心 类似地 消息队列也 可作为分布交互的手段 消息的语法和语义定义保证了使用与实现的分离 使用消息队列的 客户或服务是不依赖于对方的 既然中间件能隔离设计与实现 能在分布的环境中封装实现 的细节 那么 基于中间件的构件开发也就是可能的 隔离应用构件与复杂系统资源隔离应用构件与复杂系统资源 构架很重要的一个功能就是将系统资源与应用构件隔离 这是保证构件可重用甚至 即 插即用 的基础 与中间件的意图同样是一致的 中间件最大的优势之一就是屏蔽多样的系 统资源 保证良好的互操作性 应用构件开发者只需要按照中间件规定的模式进行设计开发 不必考虑下层的系统平台 因此可以说 中间件真正提供了与环境隔离的构件开发模式 符合标准的交互模型符合标准的交互模型 构架不是什么具体软件 而是抽象的模型 但模型中应当定义一些可操作的成分 如标 准的协议 标准的中间件则实现了构架的模型 实现了标准的协议 如基于 CORBA 的对象中 间件使用的是 CORBA 规范作为构架模型 具体则实现了可互操作的 GIOP 协议 映射到 TCP IP 为 IIOP 协议 定义了 CDR 数据表示语法 数据包格式 消息语义等内容 因此 基 于中间件的构件是符合标准模型的 软件重用软件重用 软件重用是构件化软件生产的根本目标之一 中间件提供了构件封装 构件交互规则 构件与环境的隔离及构架设施等机制 这些都为软件重用提供了方便的解决方案 另外 通过类似应用桥的机制 中间件可以建立访问过去应用的通道 或者在新的中间 件体系中建立特殊的运行容器 封装以往的应用 从而最终做到对应用遗产的继承性重用 提供对应用构件的管理提供对应用构件的管理 基于中间件的构件软件可以方便地进行管理 因为构件总可以通过方便的标识机制进行 划分 还可以使用构件库机制配合一些管理规则 例如 微软的 COM 就利用 Windows 系统注 册表配合几种唯一标识构件的方式 实现构件的登记 注销 定位 CORBA 规范中有接口池 实现池等规范定义 配合应用登记管理的机制 也能对应用构件实施管理 总之不难得出结论 基于中间件开发的应用是构件化的 中间件提供了构件的体系结构 大大提高了应用构件生产的效率和质量 构件思想对中间件的作用构件思想对中间件的作用 中间件本身作为软件产品 正处于方兴未艾之际 因此本身也可以借鉴构件思想 构件 化的软件开发对中间件同样适用 首先 中间件作为分布式计算平台 涉及资源多样 包括各种操作系统 数据库 网络 协议甚至语言 其目标是在分布的环境中统一使用这些资源 因此 可以建立针对这些资源 的构件库 以动态 灵活的方式进行构件的装配 如针对不同的面向连接的网络协议 可使 用统一语义的网络驱动器构件 最灵活的情况是根据配置动态绑定 其次 中间件的一个重要的设计目标是互操作 而互操作的关键是有清晰而与实现无关 的接口 因此在互操作的边界上 必须将构件的思想融入设计中 再次 中间件的应用范围越来越广 但应用有不同的需要 不同的业务特点 如果仅仅 依靠固定的模式去套用 显然不合适 例如 多数 MIS 应用并不需要交易管理 有些分布应 用也没有 OLTP 的特点 金融应用中安全就显得十分关键 拓展到 Web 的应用则特别要求精 干 安全和适应性强 因此 中间件必须设计成可伸缩的体系 由一些可替换的构件组成 如某些重于可靠 某些强调实时 某些则需要小巧 产品只有这种定位 才能在变化迅速的 市场上总是适应需求 立于不败之地 第四 中间件不是最终的应用 需要服务于应用开发 但可以面向典型业务的模型 以 方便应用的开发 这些模型可以以构件的形式作为产品提供 例如 CORBA 服务和设施就是 一些典型应用的抽象体现 使用这些服务的构件 应用可以大大减少开发规模 并获得良好 的效果 以构架化技术术语讲 就是领域建模 第五 成功的商业软件都是非常便于管理的 同样中间件也有可配置性的需要 管理整 个系统是个复杂的行为 但如果转化为若干简单行为的统一 对开发就很简单而明确 事实 上 标准的网络管理协议正是蕴涵了这种思想 基于构件化开发的中间件也一样 各个构件 自身是独立配置的单元 只需进行集成就可达到系统的管理目标 因此 构件化的软件设计思想在中间件发展中起到了重要的作用 可以预见 构件化的 中间件在今后市场上是有强大生命力的 第三节第三节 JDBCJDBC 简介简介 JDBC 是一种用于执行 SQL 语句的 Java API 它由一组用 Java 编程语言编写的类和接口 组成 JDBC API 向 Java 编程语言提供了统一的数据访问方法 通过使用 在程序中实现向 各种关系数据库发送语句已经变成一个很容易的过程 换言之 有了 JDBC API 就不必为 访问 Sybase 数据库专门写一个程序 为访问 Oracle 数据库又专门写一个程序 为访问 Informix 数据库再写另一个程序 同时 使用 Java 编写的应用程序可以跨平台使用 即在操 作系统改变时 无需重新为新的操作系统编写不同的应用程序 这也使得采用 Java 和 JDBC 结合的方式进行开发的程序员只需写一遍程序就可以让该程序在任何平台上运行 通过使用 JDBC API 用编写的应用程序能够执行 SQL 语句 检索结果 并把修改后的结果回存到底 层的数据源 由图示可以看出 JDBC 中最上层是 Java 应用程序 第二层是 JDBC 驱动管理器 最底 层是 JDBC 驱动程序 Java Application JDBC Driver Manager JDBC Net Driver JDBC ODBC Bridge Driver ODBC and DB Drivers Driver A Driver B JDBC API JDBC Driver API Proprietary database access protocolsJDBC Middleware Protocol 图 6 JDBC 的结构 第四节第四节 JDBCJDBC 驱动程序驱动程序 1 JDBC ODBCJDBC ODBC 桥和桥和 ODBCODBC 驱动程序驱动程序 软件桥产品通过驱动提供存取功能 ODBC 二进制代码以及在很多情况下的数据库客户 端代码必须在每个使用该驱动的客户端进行安装 如果在程序所使用的网络里安装客户端不 是个大问题 或者三层结构的应用服务器代码由编写 那么使用这种驱动程序就很合适 JDBC ODBC 桥驱动程序的配置如图 7 所示 2 2 JDBCJDBC 网络纯网络纯 JavaJava 驱动程序驱动程序 JDBC 网络纯 Java 驱动程序把调用解释为与数据库管理系统独立的网络协议 这种网络 协议再被服务器解释成数据库管理系统的协议 这种中间件服务器可以把纯 Java 客户端与多 个不同的数据库连接起来 这是最灵活的可选方案 不必要求客户端安装本地库 这种类型 的驱动程序配置见图 8 所示 3 本地 本地 APIAPI 部分部分 JavaJava 驱动程序驱动程序 本地 API 部分 Java 驱动程序把 JDBC 调用转换成对客户端 Oracle Sybase Informix IBM DB2 或者其他部分数据库管理系统 API 的调用 同 JDBC ODBC 桥驱动程序相似 这一类型 的驱动程序也需要在每个客户端机器上装载和操作系统相关的二进制码 由于这类驱动不必经过 ODBC 中间层 因此其性能明显优于由 JDBC ODBC 桥构成的驱 动程序 这种类型的驱动程序配置见图 9 所示 4 本地协议纯 本地协议纯 JavaJava 驱动程序驱动程序 本地协议纯 Java 驱动程序直接把 JDBC 调用转换成数据库管理系统使用的网络协议 它允许从客户端机器上直接调用数据库管理系统服务器 这是内部网绝佳的解决方案 因为这些网络协议中很多是厂商专有的 所以客户端配置的灵活性会受到一定的限制 这种类型的驱动程序配置见图 10 所示 本地协议纯 Java 驱动程序的一个典型范例就是 SQL Server 2000 JDBC Driver 驱动程序 该驱动程序提供 Java 小应用程序 应用程序 服务器端应用程序等的 JDBC 访问接口 同时 提供局域网或者广域网里点对点或者多层体系结构下的 SQL Server 2000 的数据访问 JDBC 网络纯 Java 驱动程序和本地协议纯 Java 驱动程序是程序开发中较佳的选择 因为 这两类驱动程序提供了包括自动安装在内的 Java 技术的优势 JDBC ODBC 桥和 ODBC 驱动程序和本地 API 部分 Java 驱动程序是在没有纯 Java 驱动 程序时的过度产品 一般来讲这两种驱动程序都不是最理想的选择 表 1 四种驱动程序的比较 驱动程序类型纯 Java网络连接 JDBC ODBC 桥 本地 API 为基础 JDBC 网络 本地协议为基础 否 否 客户端是 服务器端可能是 是 直接 直接 间接 直接 Java 应用程序 JDBC API JDBC 类型 1 驱动 本地 ODBC 客户 端驱动程序库 DBMS 接口客户 端库 DBMS DBMS 接口服务 器端库 数据库客户端 数据库服务器端 图 7 JDBC ODBC 桥驱动程序 Java 应用程序 JDBC API JDBC 类型 3 驱动 DBMS DBMS 接口服务 器监听器 数据库客户端 数据库服务器端 中间件监听器 DBMS 接口客 户端 数据库中间 件服务器 图 8 JDBC 网络纯 Java 驱动程序 Java 应用程序 JDBC API JDBC 类型 2 驱动 DBMS 接口客户 端库 DBMS DBMS 接口服务 器端库 数据库客户端 数据库服务器端 图 9 本地 API 部分 Java 驱动程序 Java 应用程序 JDBC API JDBC 类型 4 驱动 DBMS DBMS 接口服务 器监听器 数据库客户端 数据库服务器端 图 10 本地协议纯 Java 驱动程序 第三节第三节 JSPJSP 中有关中文处理的问题中有关中文处理的问题 计算机最初的操作系统支持的编码是单字节的字符编码 于是 在计算机中 一切处理程序最初都是以单字节编码的英文为准进行处理 随着计算机的发展 为了适应世界其它民族的语言 当然包括我们的汉字 人们提出了 UNICODE 编码 它采用双字节编码 兼容英文字符和其它民族的双字节字符编码 所以 目前 大多数国际性的软件内部均采用 UNICODE 编码 在软件运行时 它获得 本地支持系统 多数时间是操作系统 默认支持的编码格式 然后再将软件内部 的 UNICODE 转化为本地系统默认支持的格式显示出来 Java 的 JDK 和 JVM 即 是如此 我这里说的 JDK 是指国际版的 JDK 我们大多数程序员使用的是国际化 的 JDK 版本 以下所有的 JDK 均指国际化的 JDK 版本 我们的汉字是双字节编 码语言 为了能让计算机处理中文 我们自己制定的 gb2312 GBK GBK2K 等 标准以适应计算机处理的需求 所以 大部分的操作系统为了适应我们处理中文 的需求 均定制有中文操作系统 它们采用的是 GBK GB2312 编码格式以正确显 示我们的汉字 如 中文 Win2K 默认采用的是 GBK 编码显示 在中文 WIN2k 中保存文件时默认采用的保存文件的编码格式也是 GBK 的 即 所有在中文 WIN2K 中保存的文件它的内部编码默认均采用 GBK 编码 注意 GBK 是在 GB2312 基础上扩充来的 由于 Java 语言内部采用 UNICODE 编码 所以在 JAVA 程序运行时 就存在着一个从 UNICODE 编码和对应的操作系统及浏览器 支持的编码格式转换输入 输出的问题 这个转换过程有着一系列的步骤 如果 其中任何一步出错 则显示出来的汉字就会出是乱码 这就是我们常见的 JAVA 中文问题 同时 Java 是一个跨平台的编程语言 也即我们编写的程序不仅能在中文 windows 上运 行 也能在中文 Linux 等系统上运行 同时也要求能在英文等系统上运行 我们经常看到有 人把在中文 win2k 上编写的 JAVA 程序 移植到英文 Linux 上运行 这种移植操作也会带 来中文问题 还有 有人使用英文的操作系统和英文的 IE 等浏览器 来运行带中文字符的程序和浏 览中文网页 它们本身就不支持中文 也会带来中文问题 几乎所有的浏览器默认在传递参数时都是以 UTF 8 编码格式来传递 而不是按中文编码传 递 所以 传递中文参数时也会有问题 从而带来乱码现象 对于几乎所有数据库的 JDBC 驱动程序 默认的在 JAVA 程序和数据库之间 传递数据都是以 ISO 8859 1 为默认编码格式的 所以 我们的程序在向数据库内 存储包含中文的数据时 JDBC 首先是把程序内部的 UNICODE 编码格式的数据 转化为 ISO 8859 1 的格式 然后传递到数据库中 在数据库保存数据时 它默认 即以 ISO 8859 1 保存 所以 这是为什么我们常常在数据库中读出的中文数据是 乱码 对于 JAVA 程序和数据库之间的数据传递 我们可以用图 11 清晰地表示出来 JAVA 程序 EJB Servlet J SP 等 JDBC 连接 器 数据库系统如 mysql sqlServer 2k 等 JDBC 在这里将 unicode 的 字符转化为 iso 8859 1 的 并在网络上传输 设置了数据库默认的编码 格式了吗 没有 以 iso 8859 1 来存储数据 输出的 unicode 编码的字符串向 数据库存储 数据库在这里将 接收到的串以 iso 8859 1 格式 存储起来 图 11 JAVA 程序和数据库之间的数据传递 首先 经过上面的详细分析 我们可以清晰地看到 任何 JAVA 程序的生命 期中 其编码转换的关键过程是在于 最初编译成 class 文件的转码和最终向用 户输出的转码过程 其次 我们必须了解 JAVA 在编译时支持的 常用的编码格式有以下几种 ISO 8859 1 8 bit 同 8859 1 ISO 8859 1 ISO 8859 1 等编码 Cp1252 美国英语编码 同 ANSI 标准编码 UTF 8 同 unicode 编码 GB2312 同 gb2312 80 gb2312 1980 等编码 GBK 同 MS936 它是 gb2312 的扩充 及其它的编码 如韩文 日文 繁体中文等 同时 我们要注意这些编码间的 兼容关体系如下 unicode 和 UTF 8 编码是一一对应的关系 GB2312 可以认为是 GBK 的子集 即 GBK 编码是在 gb2312 上扩展来的 同时 GBK 编码包含了 20902 个汉字 编码范围为 0 x8140 0 xfefe 所有的字符可以一一对应到 UNICODE2 0 中来 再次 对于放在操作系统中的 java 源程序文件 在编译时 我们可以指定它内容的编码 格式 具体来说用 encoding 来指定 注意 如果源程序中含有中文字符 而你用 encoding 指定为其它的编码字符 显然是要出错的 用 encoding 指定源文件的编码方式为 GBK 或 gb2312 无论我们在什么系统上编译含有中文字符的 JAVA 源程序都不会有问题 它都会正 确地将中文转化为 UNICODE 存储在 class 文件中 然后 我们必须清楚 几乎所有的 WEB 容器在其内部默认的字符编码格式都是以 ISO 8859 1 为默认值的 同时 几乎所有的浏览器在传递参数时都是默认以 UTF 8 的方式来传递 参数的 所以 虽然我们的 Java 源文件在出入口的地方指定了正确的编码方式 但其在容器 内部运行时还是以 ISO 8859 1 来处理的 getBytes 方法用于将中文字符以 ZS08859 1 编 码方式转化成字节数组 而 GBK 则是目标编码方式 在以ISO 8859 1 方式编码的数据库 中读出中文字符串s1 经过这个方法进行转换 然后即可在支持 GBK 字符集的操作系统 和应用软件中正确显示中文字符串 s2 第三章第三章 论坛总体分析与设计论坛总体分析与设计 第一节第一节 开发工具的选用及介绍开发工具的选用及介绍 Java 是 Sun 公司开发的一种面向对象的程序设计语言 它和传统的程序设计语言不同 支持多线程控制 而且跨平台 Java 为 Internet 应用带来了一场变革 Sun 公司提供了一种标准的访问数据库的 Java 应用程序接口 JDBC JDBC 定义了 Java 与数据库之间的接口类库 是 Java 语言中执行 SQL 语句的 API 程序设计人员通过它可以 方便的建立与数据库的连接 操纵数据库 JSP 综合了中间件和 Java 的优点 前者的优点在于可以使程序访问异构的数据库 而不 必对应用程序作出改动 后者的优点在于具有平台无关行 不需要为不同平台编写不同的应 用程序 也就是同样的程序可以在 Windows 环境下运行 也可以在 Unix 或者 Linux 下运行 JSP 的工作方式为 客户端浏览器首先访问 Web 服务器 从 Web 服务器上下载 Java 小 程序 Applet 的字节码文件 以及相关类和 JDBC 接口的字节码文件 然后和 Web 服务器脱 离 Applet 根据数据库服务器的地址 端口号 帐号和数据库服务器连接 进行交互操作 由于 JSP 技术有可操作性 可维护性 安全性 高效性等一系列优良特性 因此和其他中间 件技术相比 有很大的优势 目前 JSP 技术已经越来越广泛的应用到各行各业当中 Web 服务器负责处理用户静态页面访问请求 将动态页面访问请求发送给应用服务器 应用服务器负责处理 JSP 页面的访问请求 调用 JAVA Bean 从而完成业务处理 在 Bean 中封装对数据库的读写操作 图 12 JSP 的工作原理 JSP 具有以下优点 1 将内容的生成和显示进行分离 使用 JSP 技术 开发人员可以使用 HTML XML 标 识来设计最终页面 而使用 JSP 标识生成页面的动态内容 所生成的内容将被封装 在 JavaBeans 组件中 并且捆绑在脚本语言中 所有的脚本语言在服务器端运行 如果核心逻辑被封装在 JSP 标识和 JavaBeans 中 那么 Web 管理人员和设计者能够 编辑和使用 JSP 页面 而不影响内容的生成 在服务器端 这些标识和脚本的解释 引擎将从客户端发送过来的请求生成内容 将结果以 HTML XML 的页面形式送回 客户端浏览器 这就有利于 Web 的设计者保护代码版权 又保证了 Web 浏览器的 安全性 同时 Web 页面设计人员编写 HTML 只需要流出地方让 Servlets 程序员插 入动态部分即可 2 可以重复使用组件 JSP 提出了可以在交互式的 Web 页面上重复使用组件的技术 也就是说 一次编写 多次使用 JSP 页面可以更加容易的跨平台 跨 Web 服务 器的移植 而不用改变任何条件来适应新环境 3 采用标签简化页面开发 Web 页面开发人员不会都是熟悉脚本语言的程序员 JSP 简 化了页面开发的工作量 它封装了许多在生成动态内容所必须的功能 这些功能通 过接口来访问和实例化 JavaBeans 组件等等 因此 开发人员都可以为常用的功能来 创建自己的标识库 这使得 Web 页面开发人员能够使用熟悉的工具来执行特定的功 能 第二节第二节 系统运行环境系统运行环境 客户端环境要求 Windows 2000 Professional Office 2000 IE5 0 服务器端环境要求 硬件 Sun 3500 Server 软件 操作系统 Solaris 8 应用服务器 Weblogic 7 0 web 服务器 Apache 数据库服务器 Infomix 9 21 第三节第三节 论坛各模块划分及功能论坛各模块划分及功能 用户模块用户模块 本模块主要完成下列功能 用户注册 用户登录 显示论坛帖子 帖子的编辑 发表和回复 查询文章等 用户注册功能 主要实现新用户注册的功能 需要用户正确填写相关信息 包括用户名称 密码 用户性别 邮箱 家庭住址 手机号码 出生年月等 当判断用户所 填信息合法后 用户登陆功能 主要实现用户登录的功能 当用户正确填写用户名和密码后 将能顺利登录 到论坛 进行发帖 文章查询功能 主要实现按关键字进行搜索文章功能 管理模块管理模块 本模块主要实现管理员的管理功能 包括公告管理 论坛管理和用户管理 公告管理功能 包括修改 删除 新增公告 用户管理功能 包括修改 删除用户 改变禁启状态 搜索用户及删除用户所有帖子 论坛管理功能 包括修改 删除 新增论坛 公共模块公共模块 本模块主要完成下列功能 对数据库的操作封装 包括建立连接 执行 SQL 语 句 处理异常等 对文件的读取操作 对中文的处理等 聊天室模块聊天室模块 本模块主要完成下列功能 运行时先提示输入昵称 接着进入聊天主界面 用 户可以看见其他用户的聊天记录 在本程序中保留了三十句聊天记录 如果用 户的输入为空 系统将产生警告 第四节第四节 数据库结构设计数据库结构设计 表 2 公告 字段名类型中文注释备注 公告 IDVarChar 16 公告 ID 主键 公告标题VarChar 16 题目Not null 公告内容VarChar 64 内容Not null 公告时间Date发布时间Not null 表 3 论坛栏目 表 4 用 户 字段名类型中文注释备注 论坛 IDVarChar 16 论坛 id 号主键 创建时间Date创建时间Not null 帖子数量integer帖子数量 主题数量integer主题数量 论坛名称Char 20 论坛名称Not null 版主姓名VarChar 64 姓名Not null 版主密码Char 6 密码Not null 最后发表人VarChar 64 最后发表人 字段名类型中文注释备注 用户 IDVarChar 16 用户 ID 主键 用户名VarChar 64 用户密码Not null 密码VarChar 16 用户姓名Not null 用户性别Char 1 性别 用户邮箱VarChar 64 邮箱 手机号码VarChar 20 手机 居住地址VarChar 64 地址 OICQVarChar 64 q q 号 出生日期Date出生日期 发帖次数integer总共发帖次数 访问次数integer访问次数 用户等级VarChar 64 用户级别 分为管 理员 游客和会员 注册日期Date注册日期 是否在线VarChar 16 在线标志 表 5 在线 字段名类型中文注释备注 在线 IDVarChar 16 在线用户 ID主键 在线用户名VarChar 16 在线用户名 在线开始时间Date在线开始时间 在线后面时间Date在线后面时间 在线最后时间Date在线最后时间 在线 IP 地址VarChar 16 在线 IP 地址 表 6 Chat 字段名类型中文注释备注 username VarChar 64 用户姓名 lastModdify Date最后修改时间 表 7 Fayan 字段名类型中文注释备注 IDVarChar 16 用户 ID主键 UserstingDate聊天内容 colorVarChar 64 文本颜色 第四章第四章 论坛详细设计及实现论坛详细设计及实现 第一节第一节 公共模块公共模块 一 功能一 功能 本模块主要完成下列功能 对数据库的操作封装 包括建立连接 执行 SQL 语句 处理异常 等 对文件的读取操作 对中文的处理等 二 主要程序文件及功能 二 主要程序文件及功能 表 8 程序文件及功能 原程序文件名原程序文件名主要功能主要功能相关程序及关系相关程序及关系 jdbc java 连接数据库 执行 SQL 语句 完成对数据库的操 作 ReadDateFile java 取数据库 配置属性 完成连接 ReadDateFile java 读取文本文件中的参数 返回参数值 forread txt 此文件存放数据 库配置信息 forread txt 存储连接数据库所需的重 要参数 三 重点 难点代码的设计三 重点 难点代码的设计 jdbc java 文件 1 由于使用 JDBC ODBC 桥驱动程序 采用以下代码加载 Class forName sun jdbc odbc JdbcOdbcDriver 加载了驱动程序后 即可调用 JDBC 的函数建立与数据库的连接 与数据库建立连 接的办法就是调用 DriverManager 类的 getConnection 函数 这个函数的参数是个代表数 据库位置的资源定位字符串 URL DriverManager 类保持了一系列的驱动程序的列表 当 getConnection 的方法被调用的时候 它就在这一系列的驱动程序中进行检索 直到找 到能定位到 URL 所指向的数据库的驱动程序为止 一般意义上的 URL 用来定位 Internet 上的资源 JDBC URL 提供了一个识别数据源 的方法 靠 URL 驱动程序就可以找到数据源并且实现连接 JDBC URL 是由设计驱动程 序的人员来命名和指定的 用户不用考虑怎么构建一个 URL 而只需要使用驱动程序相应 的 URL 就行了 JDBC URL 指定驱动程序的用法非常灵活 首先在这些 URL 中允许驱动程序用各种 不同的模式来命名数据库 如使用 ODBC 子协议 就要求 URL 中包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国草本植物行业发展趋势分析与未来投资战略咨询研究报告
- 社区筛查工作总结
- 弱电负责人年度工作总结
- 离婚协议签订注意事项及子女抚养权及监护权协议
- 高净值人士离婚财产分割与子女抚养费约定合同样板
- 离婚协议中夫妻共同债务分割及追偿范本
- 社区社区活动场地租赁及社区文创产品推广合同
- 护理人员服装礼仪标准
- 离婚子女抚养费用调整及子女生活费用调整补充协议
- 2025至2030中国冻干粉针剂行业运营态势与投资前景调查研究报告
- 2025版防洪堤坝加固工程施工合同
- 2025年消防经济学试题及答案
- 2025-2026学年人教版(2024)小学美术三年级上册教学计划及进度表
- 智能培训系统构建
- 2025年秋期新教材人音版三年级上册小学音乐教学计划+进度表
- 2025广东广州越秀区矿泉街招聘禁毒专职人员1人考试备考题库及答案解析
- 14.守望生命 课件 九年级上册《心理健康教育》(鲁教版)
- 2025年医院安全员安全技能测试
- 网络安全技术培训
- 医学检验项目培训
- 2025年兽医实验室理论考试题库及答案详解【夺冠系列】
评论
0/150
提交评论