1、第 1 章 绪论11 引言Internet 已经成为人们生活、工作、学习越来越离不开的平台。Web 技术已经不在局限于单纯地提供信息服务,而是日益成为一个操作平台,为用户提供强大的服务功能。例如网上电子商务、社会信息数据库等。网络实现了远程通讯,人们能够通过计算机网络进行电子邮件的发送,召开网络会议,网上购物,甚至坐在家里就可以上大学(网上教育) 。网络有巨大的潜力待我们去开发与探索。因此,基于 B/S 体系架构创建这个校友网站,紧跟行业发展,满足人们生活、学习的需要。建立一个基于 B/S 架构的校友录,实现信息网络化。通过较丰富的功能将 Web 的技术特点体现出来。该系统可供包括在校、离校、
2、以及游客登录使用。登录者可以查询信息或者发布信息,也可以通过此网站与朋友联系,并且还能够创建虚拟班级等功能。系统中班级管理为必不可少的模块项,主要是为了安全有效地存储和管理登录网站的用户的信息,赋予管理员特定的权限,可以对用户进行分类,添加,删除,修改等。方便网站的管理与维护。要实现这样的功能,离不开后台数据库的支持。用户验证信息,收集到的用户点击信息,分析得出的关联规则表等大量的数据都由数据库管理系统管理。本文中数据库服务器端采用了 Oracle 作为后台数据库,以先进的 JDBC 技术与数据库连接,结合 SQL 语句处理对用户分类,添加,删除,修改等操作,使 Web 与数据库紧密联系起来。
3、整个个性化页面生成系统主要由使用 JSP 技术开发实现个性化 Web 页面生成和 JS 结合 JavaBeans 技术实现组件重用两部分组成。整个系统结构如图 1-1 所示。图 1-1 系统结构图 本文作者主要完成客户端,Web 服务器端应用程序和数据库的制作,实现网上虚拟班级的创建,管理员注册/登陆、班级管理员对用户进行分类,添加,删除,修改等功能。实现与完善整个基于 B/S 校友录网站的组织建立和测试工作。12 背景121 B/S 模型的优点几乎没有限制的客户端访问和极其简单化的应用程序部署和管理是 B/S 模型的优势所在。它和 C/S 模型比较优点极为突出。两层技术模型(Two-Tier
4、 Architecture)是指客户机直接与服务器交流,没有其他服务介入的技术模型。对用户量在 12100 的局域网环境中,两层模型的确是个不错的方案。由于该模型中,所有的用户连接都是被保持的,也就是说即使在空闲状态,连接依然存在。所以,用户的并发请求数量有限的。为了解决这个限制,使得成千上万的用户可以被无顾虑地添加,我们最好选用三层模型。B/S 结构,即 Browser/Server(浏览器/服务器)结构,是随着 Internet 技术的兴起,对C/S 结构的一种变化或者说是改进的结构。用户界面完全通过浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成三层结构,是一种
5、全新的软件系统构造技术。B/S 模型结构图如下所示:图 1-2 B/S 模型结构图从上图可见 这种结构的一个重要的特点是,用户可以完全不需要安装客户端软件,当然也不需要担心任何软件升级和不兼容等任何客户端所遇到的问题。相比之下,B/S 模型的优点显而易见,更适合这个网站的构建,有利于网站的维护和扩充。122 JSP 技术发展背景Web 技术的迅猛发展正推动 Internet 上信息服务类的进步。WWW 服务的基础是HTML 语言。这个系统模块中用到的 JSP 技术是在 HTML 语言的基础上使用脚本语言对网页的对象模型进行编程。JSP 全称 JavaServerPages,它是由 Sun Mi
6、crosystems 公司提出、许多公司参与建立的一种动态网页技术标准。它诞生在 1999 年 6 月 1 日。目前国内外已经在广泛地使用 JSP。随着 JAVA 语言得到普及,越来越多的公司开始关注 JSP 的前景。传统的动态网页制作包括 CGI、ASP 、JSP 三种,而 JSP 具有明显的优势。使用 CGI-BINJ 接口是一个最早的动态 WEB 页面问题的解决方案。缺点,CGI 程序必须从 CGI 接口读入一长串的字符串,再从字符串中取得所需要的数据并加以处理。过程十分繁琐。另一个缺点,除了 Perl 是解释语言外,其他都是编译式的语言。每次修改后,都必须重新编译一次,这给开发人员带来
7、麻烦,增加了工作量。ASP 和 JSP 都能取代 CGI 使网站建设和发展变得简单快捷。尽管 JSP 技术和 ASP 在许多方面都有相似的,但仍然存在很多不同之处,其中最本质上的区别在于:两者是来源于不同的技术规范组织,其实现的基础,WEB 服务器平台要求不相同。1)作为 Java 平台的一部分,JSP 拥有 Java 编程语言 “一次编写,各处运行” 的特点。一次写入,之后,可以运行在任何具有符合 JavaTM 语法结构的环境。取代之过去单一平台开发。 ASP 主要工作环境是微软的 IIS 应用程序结构,又因 Activex 对象具有平台特性,所以ASP 技术不能很容易地实现在跨平台的 WE
8、B 服务器的工作。2)从开发人员的角度来看其区别在于:ASP 仅支持组件对象模型 COM,而 JSP 技术提供的组件都是基于 JavabeansTM 技术或 JSP 标签库。3)JSP 标签可扩充性。JSP 技术能够使用开发者扩展 JSP 标签,JSP 开发者能定制标签库,减少对脚本语言的依赖4)生成可重用的组件。JSP 基于组件的技术方法加速了总体开发过程。 JSP 组件(Javabeans,或定制的 JSP 标签)是跨平台可重用的。 Javabeans 组件可以访问数据库,并能以分布式系统模式工作于 UNIX 和 WINDOWS 平台。5)易于维护性。 基于 JSP 技术的应用程序比基于
9、ASP 的应用程序易于维护和管理。JSP 突出的组件技术使修改内容而不影响逻辑或修改逻辑而不影响内容变得很容易实现。如上的比较不难看出,JSP 技术编写的程序运用要更加灵活,可扩展性更强。第 2 章 需求分析21 任务描述系统模块的设计应该遵循整个系统总体设计思路。即基于 B/S 模型构建校友录。系统的总体设计应该是提供给上网浏览者一个效率高,能容丰富的网络空间。包括用户可以在线聊天,上传下载图片,网上购物等种种功能。其中校友录中必不可少的主体模块之一就是网上虚拟班级的创建,它将提供的是一个互动的虚拟空间。班级作为一个整体包含了许多的个体,用户作为班级的个体可以在班级范围能有自己的行为。与其相
10、关涉及到班级的长期维护和管理等功能。班级管理员充当维护者这个角色,他可以将班级成员组织在一起,而且拥有班级管理功能的使用权。而针对用户将使用到的功能和特点,将此系统模块划分为班级注册、管理员信息注册、管理员权限操作(包括:班级成员的删除、班级的删除、更改班级名称、添加班级管理员、班级留言等) ,数据库设计等几个子模块。那么系统功能的使用者应该是班级管理员,所有的功能设计都应该以管理员的权限为核心。此处管理员权限的功能设计定要引用到大量的数据库操作,这就需要考虑到为虚拟班级分配系统存储空间,建立数据库表。那么,选择数据库,创建数据库用户和表,建立与数据库的连接,使用 SQL 语言操作数据库就是系
11、统后台设计围绕的主体。能否将系统的前后台合理有效的关联是整体系统模块成功的关键。22 用户特点系统应该围绕着用户特点设计。管理员有权将普通班级成员升级为班级管理员,协调日常工作。有权将班级管理员降级为普通班级成员,将违反网站用户协议的,对班级造成不良影响的普通班级成员从本班级中除名。有权将班级的名称进行合理更改,使其更容易查询。有义务定期维护班级校友录,发展班级成员,使旧时的班级重新成为一个整体。以便参加网站为校友们不定期举办的丰富多彩的活动,发布班级通知等。遵守网站用户协议,管理班级成员不传播任何非法的、伤害性的、淫秽等信息资料。有义务作为班级成员与网站之间的沟通纽带,及时将双方所需的信息进
12、行沟通。可以将自己的所有权利移交给另一位班级成员。23 条件与限制此系统模块的设计主要突出班级管理员的功能和特点,它与普通的用户有很大的区别。系统虽然对所有用户开放,但部分资料和功能只针对班级管理员开放;新增用户需要通过申请、注册等方式获得希望得到的权限和信息;如果不遵守网站用户协议,或传播任何非法的、淫秽等信息资料,将立即取消用户服务帐号,并视情节的严重性付诸于法律。数据库中要以班级名称和用户名为主键,这就要求用户创建初始信息是必须填写这两项。为了确保用户输入数据的有效性并与数据库字段设计相符,所以对用户输入的表单项也要做相应的约束。24 系统配置241 Hardware (硬件)硬件环境(
13、访问者):建议用户在力所能及的情况下采用较高配置的硬件资源。硬件环境(开发者):pentiumIII 处理器,256M 内存,10G 磁盘空间。242 Software (软件)访问者:IE、Netscape 等浏览器。最好是 IE 浏览器,本网页在 IE 浏览器下通过了测试。开发者:1)Operating System (操作系统):Windows2000/NT/XP2)Tools (工具):EditPlus 2, DreamweaverMX3)Database (数据库):Oracle8i4) Server (服务器) :ApacheTomcat/WebSphere5)Run Circum
14、stance (运行环境) :安装 JDK1.4 支持 Java 运行。6)Technic (技术):前台网页的设计采用 JSP 技术制作。JSP 网页吸引人的地方之一就是能结合 JavaBeans 技术来扩充网页中程序的功能。 JSP 程序实际上 JSP 元素、Java 程序和 HTML 文档的混合体, JSP 以 Java 作为其脚本语言,几乎继承了 Java 语言的所有特点。25 编码规范文件名用英文表示其功能,起到一目了然的作用。文件归类,以不同文件夹存放图片LifengImageJSP LifengJSPJavaBeanWEB-INFclasseslifengworks出错信息页的制
15、作。用户操作错误时,返回出错信息。第 3 章 系统设计31 模块划分此系统模块要的功能是创建班级和班级管理员操作权限的实现,围绕着这个目标把系统制作划分为登录子模块、创建班级子模块、管理员权限子模块和数据库模块。如图 3-1 所示。首页可以作为其它功能项的一个向导,起连接的作用,而管理员权限子模块又被细分为删除功能子模块、查询功能子模块、管理员班级留言功能块。图 3-1 模块划分结构图 登录子模块和创建班级子模块在系统中的实现其功能对所有用户可见,而删除、查询、管理员班级留言功能只针对身份被标识为管理员的用户开放。32 设计模式模块 1:用户身份验证设计。用户进入该系统,首先需要进行身份验证。
16、如果通过了身份验证,则为合法用户,同时其帐号和权限等资料将会保存在 Session 对象,Session 对象储存的信息是局部的,随用户不同而不同的。当用户访问系统的各个子系统时,系统自动从 Session 对象中获取用户的资料,而无须将用户的资料作为请求方法、参数名、参数值追加到 URL 中。这样可以避免用户恶意修改 URL 中的值来非法访问。Session 对象中的变量设置:Session“UserID” 用户帐号 Session“Roles” 用户权限 模块设计流程如图 3-2 所示。 是 否图 3-2 登录验证流程图 用户登录这个过程是必须的,因为只有这样才能从数据库中得到用户的帐号和
17、权限。模块 2:创建班级功能的设计。通过了注册后的用户才可以创建新班。用户创建时必须输入合法的班级名称和基本信息,班级名被设定为数据库 Class_table 的主键,系统将判断新班级的名称是否与数据库中现有的记录重复,如果重复就违反了主键唯一的原则,数据将不能够被正确的输入数据库,所以要返回给用户一个信息。否则,班级创建成功,创建者还需要补充用户信息。此模块的设计流程如图 3-3 所示。是 否是否是图 3-3 创建班级流程图 模块 3:查询功能设计。提供给用户查询功能,方便使用者查找亲友同学所属哪个班级,还可以统计出目前班级拥有多少成员。此项功能是根据使用者输入的关键字遍历数据库,查找有无匹
18、配的记录。如果记录存在将记录输出到用户浏览端,否则返回一条用户信息。例如,查询姓名为李四 的人。模块设计流程如图 3-4 所示。接口(否) 接口(是)图 3-4 查询功能流程图 模块 4:删除功能设计。作为班级管理员应该有管理班级的能力,删除功能的设计正是为班级管理员设置的管理功能之一。其中包括两部分,一是删除班级成员,二是删除整个班级。这个功能的实现需要使用 SQL 语言判断管理员所在的班级,遍历数据库中有无使用者欲删除的记录。如果记录存在,将记录删除。否则,返回信息到用户浏览端。例如把姓名为李四 的人删除或删除班级计算机一班 。模块设计流程如图 3-5 所示。接口(否) 接口(是)图 3-
19、5 删除功能流程图 33 数据库安全及设计描述数据库设计无疑是以上功能实现的基础。制作数据库表首先要确定实体的属性和实体间的关系。数据库要存储所有的班级信息和用户信息,这些信息是班级的属性和用户的属性。一个班级可以有若干的成员,也可以有一个以上的管理员。一个管理员只属于一个班级。实体间关系如图 3-6 所示。图 3-6 E-R 图角色设计初步将系统中的用户角色分成三级,如表 3-1 所示 。表 3-1 角色划分权限 描述 标记(Roles)一般用户 查询资料 1 班级管理员 查询;数据的录入、修改和删除 2 系统管理员 查询;数据的录入、修改和删除;用户帐号、权限的维护 3 权限设置使不同用户
20、对不同模块有不同的操作权限。如表 3-2 所示。表 3-2 权限设置模块 标记 说明 班级情况 SchoolWrite “1”:在该模块中有数据录入、修改的权限“0”:在该模块中只能查看 用户档案 UserWrite “1”:在该模块中有数据录入、修改的权限“0”:在该模块中只能查看 计划、总结、保留文件 FileWrite “1”:在该模块中有数据录入、修改的权限“0”:在该模块中只能查看 学校名称录入用于录入班级的名称、类型,并自动生成唯一的 ID 号。ID 号为长整型数字类型。 ID 将根据班级录入的顺序,自动从 1 递加上去。34 页面设计客户端页面是用户和服务器之间实现人机交互的一个
21、介质。对它的制作要求简洁大方,色彩搭配要协调。第 4 章 系统实现41 模块的详细设计411 登录机制网页中建立用户登录机制,为的是限制未经过登录的浏览者不能创建班级。让用户以帐号方式登录网页是一种可行的网页管理方法。在这个系统模块的后台数据库中建立USER_TABLE 表,用来对用户的登录帐号和密码加以保存。此处设置了用户对象的session 值。通过获取 session 值,遍历数据库,可以确定用户属于哪个班级和用户在班级中的身份。结构图如 4-1 所示。图 4-1 登录机制表 4-1 是这个模块的实现文件。表 4-1 实现文件文件 说明login.JSP 输入用户登录名和密码。login
22、_confirm.jsp 读取 lifeng.jsp 中用户输入的班级的属性。用户若成功登录,将把登录的帐号和密码写入 session 对象。Session.setPutValue(“userName”,userName); Session.setPutValue(“userPassword”,Password);412 创建班级班级创建是这个系统模块的核心功能之一。系统通过在数据库中遍历用户输入的班级名来判断班级的建立是否有效。使用脚本语言限制表单内的输入方式,如果表单值为空,在用户端输出“班级名不能为空”。如下图所示;图 4-2 创建班级页为了保证不重复创建班级,同时也防止数据库冲突,在得
23、到request.getParameter(“class_name”)时必须对数据库遍历。如果班级名已经存在,返回信息“班级已经存在” 。此处将 bean 文件引入,做数据库的连接工作,通过 Insert 语句把班级的属性插入到数据库中。SQL 条件查询语句检查表单中输入的班级信息是否与数据库中重复。String sql=“select * from CLASS_TABLE where class_name=“ + name1 + “;ResultSet rs = RegisterBean.executeQuery(sql);如果用户输入的班级名称在数据库中已存在,那么返回到 register.jsp 页,得到 session值。if(搜索到相同记录) 关闭数据库;session.putValue(“register_message“,“班级已存在!“);/设置返回信息。从新导回到创建页面%