BBS论坛的设计与实现样本.doc
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。旅游论坛BBS系统设计与实现学 生 姓 名 肖雄 指 导 教 师 杨洋 专 业 计算机科学与技术 学 院 信息技术工程学院 3月8日毕业设计( 论文) 任务书姓名: 肖雄学院: 信息技术工程学院班级: 12计科专业: 计算机科学与技术毕业设计( 论文) 题目: 旅游论坛BBS系统设计与实现立题目的和意义: 目的: 设计的首要目的是运用已经学习到的MyEclipse工具和MySQL数据库知识自主实现一个实用的系统, 使得现有知识得到更好的巩固, 更加熟练的操作MyEclipse工具和MySQL数据库。同时在实现中学习到更多的知识, 能更深入掌握JSP和了解软件开发的全过程, 为以后的学习与工作打下坚实的基础。意义: BBS( 电子布告栏系统) 是在网上提供交流的手段。它能够用于公告、 群组讨论、 社区内通信、 联系、 在线聊天、 找工作等, 利用网络实时、 便捷的特点来方便人们的交流、 联系和娱乐。技术要求与工作计划: 技术要求: 本设计所做的网站采用三层结构, 以MySQL数据库为后台数据库, 以JSP网页作为表现层实现, 以Struts整合Spring进行模型控制, 因此, 要求开发人员熟悉数据库的基本知识, 通晓MySQL数据库的特点和用法, 掌握Java语言的基本知识, 能熟练运用JSP进行网站开发, 以及对Struts和Spring框架有所掌握。熟练使用MyEclipse开发工具, 了解Tomcat服务器的工程部署。工作计划: 利用一个月来学习Java语言, JSP语言, Struts及Spring框架, MySQL数据库, 同时进行需求分析。利用大约一个半月的时间进行系统设计和编码。利用十天左右进行系统调试和测试。利用半个月时间完成论文编写和审定。时间安排: .7.1- .12.1 学习Java语言, JSP语言, Struts及Spring框架, MySQL数据库。 .12.5- .2.1 进行系统的概要设计, 详细设计, 代码的编写。 .2.2- .2.15 进行系统的调试与测试。 .2.15- .3.11 论文的编写和审定。摘要通用论坛BBS系统是按照MVC模式进行设计实现的, 采用Tomcat作为后台服务器, 以MySQL数据库作为数据服务器, 使用Struts和Spring进行逻辑控制, 表现层用JSP页面显示, 用于在网络上为网民提供一个信息发布、 获取的场所。实现了查看、 发表、 删除帖子功能, 论坛帖子版块控制, 注册用户能够修改自己的个人信息、 增加好友与黑名单以及用户之间发送短信息, 管理员能够对用户、 帖子, 版块、 用户组、 版块权限和用户组权限进行管理。论文从问题的提出、 基本设计思想、 数据的流向到具体的设计过程都做出了详细论述。关键词: BBS; 论坛; 主题; 回复1绪论1.1课题研究的目的及意义设计的首要目的是运用已经学习到的MyEclipse工具和MySQL数据库知识自主实现一个实用的系统, 使得现有知识得到更好的巩固, 更加熟练的操作MyEclipse工具和MySQL数据库。同时在实现中学习到更多新的知识, 能更深入掌握JSP、 Java语言, 了解软件开发的全过程, 为以后的学习与工作打下坚实的基础。BBS( 电子布告栏系统) 是在网上提供交流的手段。它能够用于公告、 群组讨论、 社区内通信、 联系、 在线聊天、 找工作等, 利用网络实时、 便捷的特点来方便人们的交流、 联系和娱乐。1.2国内外研究动态进入二十一世纪, 计算机技术迅速向着网络化、 集成化方向发展。传统的单机版应用软件正在逐渐退出舞台, 取而代之的是支持网络、 支持多种数据信息( 多媒体) 的新一代网络版应用软件, 而当前网络版软件中似乎存在着两种不同的趋势, 一种是称为客户端服务器的C/S结构应用系统, 这类软件具有结构严谨, 运行效率高, 服务器端压力小, 安全性好等优点, 被广泛运用于局域网中。而另一种, 也是本毕业设计所采用的, 是称为浏览器服务器的B/S结构应用系统, 它的特点是在客户端直接采用了功能强大的浏览器软件作为界面, 其优点在于软件开发效率高, 客户端不受操作平台的限制、 也不受地域的限制, 网络传输量少, 即适用于局域网, 更适用于Internet, 而且投资小、 见效快, 用户能够不必进行服务器方面的投资, 而是去租用, 甚至是免费使用ISP的服务器资源, 因而受到越来越多中小型单位的青睐。Internet起源于20世纪60年代末、 70年代初, 当时, 美国国防部为了将充斥于军事基地内各种厂商的电脑主机互连, 让它们能够进行数据交换以便研究工作顺利进行, 于是成立了ARPA网络计划。ARPA计划尝试建设一个网络系统, 它可将各种不同厂商的电脑连接起来。随着这个计划的成功, 各学术单位, 研究机构也纷纷与ARPA计划所建立的ARPANet连接。到了20世纪80年代, Internet这个名词因势产生, 它代表着这十年来所构建涵盖全球各地的网络系统。从1990年起, 商业使用的Internet在美国急速地扩大, 而Internet也从原来属于少数人使用的网络系统转变为普通百姓也能够使用的网络系统。最初的Internet资源服务都还停留在文本模式, 1989年, 量子物理实验室( CERN) 下的一个研究小组着手开发一种全新的Internet服务, 它能够在网络上传送图片、 文本、 影像、 声音等多媒体数据。于是由Tim Berners Lee领导的小组开发出了一种主从、 分布式的网络服务系统, 这就是WWW(World Wide Web), 俗称”万维网”。所谓WWW其实就是连上Web服务器访问资源, 取得的内容就是所谓的”主页”(HomePage)。进入的网页一般不会只有一页, 而是整个网站的内容。”网站”是一种呈现在网络上的新兴媒体, 经过Internet已经成为一个实时的, 多媒体的信息传播渠道。它的载体主要是电脑, 范围覆盖全球各地, 没有国界, 不分人种, 时时刻刻地提供服务。当前, 人们渐渐开始把网站称之为广播、 电视、 报刊以外的第四新闻媒体, 以”共享、 公平、 公正、 创新、 国际化、 团队精神”为特征的网络文明也已逐渐成为这个时代的标志, 人们越来越习惯于经过Internet网络获取信息, 经过Internet在网站上发表自己对社会对生活的理解和建议。随着网络的普及, 论坛的内容越来越丰富, 论坛也由此深受广大网民的喜爱, 因此商业网站对论坛也重视起来, 提供与网民交流的平台, 同时在线技术支持也在论坛中开展起来。1.3本文的工作BBS系统就是提供给注册用户一个平台, 会员用户能够经过Internet接入, 登录论坛, 在这个平台上发表文章、 阅读文章、 回复文章等等。此类系统一般有以下四种类型的操作用户: 匿名用户、 普通用户、 版主、 管理员、 超级管理员。每类用户有其不同的操作集, 系统一般提供一个统一的登录页面, 此页面应能自动识别不同级别的用户, 并提供不同的操作界面。与之相应, 此类系统一般应具有以下功能: 用户注册、 用户登录、 发表文章、 阅读文章、 回复文章、 分页查找、 主题查找、 作者查找、 个人资料维护、 找回密码、 版面管理、 版主管理、 用户管理、 友情链接管理等等, 所有操作都能够由用户在客户端浏览器中完成, 而服务器端程序会按用户的要求来完成对系统数据的操作, 并将结果传给Web服务器, 再由Web服务器处理成HTML文件后发送到客户端浏览器。这就是所谓的B/S结构应用系统, B/S结构即Browser/Server(浏览器/服务器)结构, 是随着Internet技术的兴起, 对C/S结构的一种变化或者改进的结构。C/S结构, 即Client/Server(客户机/服务器)结构, 是大家熟知的软件系统体系结构, 经过将任务合理分配到Client端和Server端, 降低了系统的通讯开销, 能够充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。B/S结构下, 用户界面完全经过WWW浏览器实现, 一部分事务逻辑在前端实现, 可是主要事务逻辑在服务器端实现, 形成所谓N-Tier结构。B/S结构, 主要是利用了不断成熟的WWW浏览器技术, 结合浏览器的多种Script语言(VBScript、 JavaScript)和ActiveX技术, 用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能, 并节约了开发成本, 是一种全新的软件系统构造技术。随着Windows将浏览器技术植入操作系统内部, 这种结构更成为当今应用软件的首选体系结构。结合BBS论坛系统实际需要, 本BBS系统采用B/S结构。论文设计开发的系统为通用BBS系统, 系统应该具备较大的可伸缩性, 应该能适应最基本应用最广泛的Web平台。另外, 通用系统应该具备较大的可扩展性, 而Java 语言是面向对象的, 面向对象编程注重程序的可扩展性, 且Java 语言是跨平台执行的, JSP相对其它网页编程语言有更多的优点, 因此本系统采用Java+JSP作为编程语言。2系统分析2.1可行性分析商业软件是根据客户的根本目的和需要而设计和开发的, 可行性是开发的系统具有使用价值和生命力的保证。2.1.1社会可行性当前社会是一个网络化的社会, 网络就在人们周围, 人们从网络上获取并发布信息, 而本系统正是应这一需求而产生, 为企业, 个人发布, 获取有价值的信息提供场所。因此本系统具有社会可行性。2.1.2技术可行性本系统采用三层结构, 用MySQL数据库作为后台数据库, 安装和使用简单易学, 方便操作; 前台页面采用JSP动态页面, JSP相比ASP、 PHP都有很大的优势; 控制层采用Struts+Spring框架, Struts和Spring都是Java Web开发中使用的比较热门的技术。服务器采用Tomcat服务器, 它是一个开源软件。开发人员在学习了这些语言或工具之后, 有能力开发本系统。2.1.3经济可行性经济可行性是指软件所带来的经济效益与开发设计所需要的投资费用相比较是否适当, 软件是否会给使用者带来经济效益。首先随着计算机软件和硬件技术的飞速发展, 计算机软、 硬件价格不断下降, 设计本系统所投入的资金下降。与使用本系统为企业发布、 获取信息所节省的价值相比, 应用本系统带来的收益较大, 经济效益可观, 因此在经济上是可行的。2.2需求分析需求分析虽处于软件开发过程的开始阶段, 但它对于整个软件开发过程以及软件产品质量是至关重要的。随着软件系统复杂性的提高及规模的扩大, 需求分析在软件开发中所处的地位愈加突出1。所谓需求, 是指用户对目标软件系统在功能、 行为、 性能设计约束等方面的要求。在需求分析工作中, 系统分析人员对用户的需求进行调查和分析, 确定现有环境的特征, 正确定义目标软件的特征 。因此, 需求分析工作是对应用环境及其问题进行理解和分析, 为问题涉及的信息、 功能及系统行为建立模型, 将用户需求精确化。通用论坛BBS系统设计实现以下功能: 用户中心: 包括用户注册、 用户登录、 用户注销、 增加好友、 删除好友、 增加黑名单、 删除黑名单、 发送短信息、 查看短信息、 删除短信息、 修改个人资料等功能。主题中心: 包括主题分类( 论坛版块) 、 查看主题、 查看回复、 发表主题、 发表回复、 对主题或回复进行搜索等功能。管理员中心: 管理员对论坛进行一些基本的维护, 包括对帖子的删除、 置顶、 设为精华帖, 对用户的删除、 授权, 对版块的权限管理, 对用户组及用户组的权限的管理等2。统计功能: 对论坛的相关参数进行统计。2.2.1用户中心当用户进入网站首页时, 会有一个登录窗口, 已经注册的会员用户能够在这个窗口中登录。没有登录的用户只能查看主题, 不能发表主题或评论。登录之后, 用户就能够发表主题或回复; 查看或修改自己个人信息, 包括修改用户头像, 能够选择自己喜欢的图片作为自己的头像; 能够给好友发送短信息, 查看或删除自己收到的信息; 用户能够在好友与黑名单里设置自己的关系网, 让用户与自己的好友交流更加方便, 也可在让用户不接收不愿意见到的人的信息。没有注册的用户能够在登录窗口中点击注册超链接进入新用户注册页面, 输入用户名、 密码、 密码提示问题、 提示问题答案及安全邮箱, 即可注册成为网站的会员。密码提示问题是为找密码设置的, 当用户忘记密码或密码丢失后能够经过输入提示问题答案来找回密码, 如果用户回答正确, 系统会自动发送一封邮件到用户的安全邮箱里, 提示用户修改密码。2.2.2主题中心系统有版块, 主题和回复, 其中版块是对主题的分类, 回复是在主题下发表的, 是用户对主题的评论。当用户进入首页时会显示论坛的所有版块及每个版块下的主题数, 帖子总数, 最后发表主题的用户、 时间。进入版块之后显示该版块下的主题及该主题下的回复数, 点击数, 最后发表评论的用户、 时间。点击主题名进入主题页面, 该页面有主题内容, 发表该主题的用户的用户名、 积分、 用户组、 注册时间, 该主题下的回复及发表回复的用户的个人信息。已登录用户能够在版块下发表主题, 在主题下发表回复, 还能够按关键字对主题或回复进行搜索, 并支持模糊查询。匿名用户只能查看主题内容, 对主题或回复进行搜索, 但不能发表主题, 不能发表回复。2.2.3管理员功能管理员作为一个特殊的用户, 除了拥有普通用户拥有的功能外, 还能够修改用户权限, 管理用户组, 管理版面, 设置版主, 控制用户组权限。版主作为权限最少的管理者只能对自己所管理的版面的主题进行删除、 置顶, 设置精华贴, 屏蔽用户的回复, 编辑版面说明等。2.2.4统计功能显示论坛当前注册总人数、 当前帖子总数、 论坛点击总数、 当前在线人数, 会员人数以及游客人数。用户表现积分排行, 调动用户积极性。用户每次上线、 发表主题或回复都会得到相应的积分, 并以此来体现用户的活跃程度。系统会对主题按点击数进行排序, 对版面按主题数进行排序, 帖子点击统计, 方便了解热点话题。本日版面排行榜, 本日作者排行榜。2.3开发工具及相关技术简介本系统采用的工具有JDK 1.5、 Tomcat 5.0、 MyEclipse 5.5、 MySQL5.0, 使用的技术有Java、 Servlet、 JSP、 JavaScript、 XML、 Struts、 Spring。2.3.1相关工具简介(1) JDK 1.5.0JDK是Sun 公司Java应用程序和组件的开发环境, 是编译和测试工具, 也是提供java程序的Java虚拟机平台, 是调试和运行JSP所不可缺少的工具。本系统采用JDK1.5.0版本3。(2) Tomcat 5.0Tomcat是开源的servlet和JSP容器(Sun官方推荐容器), 它是Jakarta项目中一个重要的组成, 由Apache、 Sun和其它一些公司及个人开发。Tomcat内部实现了Servlet和JSP引擎, 而且扩展了一些应用服务器的功能, 例如JNDI、 数据库连接池、 用户事务处理等。目Tomcat被广泛地应用于中小规模的Java web应用中4。(3) Eclipse/MyEclipse 5.5Eclipse 是基于Java 的开放源代码的可扩展开发平台, Eclipse平台提供软件开发工具的集成服务, 所有开发工具(包括JDE和PDE)都是用插件的形式提供的。这种设计使得Eclipse具有开放式可扩充的结构5。MyEclipse是在Eclipse集成开发环境中提供Web应用程序开发的插件, 在当前软件开发的Java领域中, MyEclipse是一个使用非常广泛的工具。MyEclipse是Eclipse软件的一个插件, Eclipse软件是免费的, 但MyEclipse不是一个完全免费的产品, 需要购买。(4) MySQL 5.0MySQL数据库是一个较小型的数据库系统, 同时是一个多用户、 多线程强壮的SQL数据库服务器, 并提供免费的安装软件6。由于它对平台环境要求不高, 安装方便, 适合中小型系统的开发。2.3.2相关技术概述(1) Java语言概述Java编程语言是一种通用、 并发、 基于类且面向对象的语言。Java编程语言与C和C+相关, 可是在组织方式上有差别, Java具有C和C+遗漏的许多优点, 同时兼有其它语言包括的一些思想。它旨在成为一种生产语言, 而不是一种研究语言, 而且正是如此7。(2) Servlet技术概述Servlet技术主要是为了使用Web上的HTTP协议而设计的。Servlet是在Web服务器上运行的程序, Java Servlet能够用于处理客户请求或生成动态Web网页。Tomcat是支持Java Servlet和JSP的Web服务器8。(3) JSP技术概述JSP (Java Server Pages)是由Sun 公司倡导, 许多公司参与, 共同建立人一种动态网页技术标准, JSP技术是在Servlet技术基础上发展起来的。它正在飞速发展中, 现在已经成为Java服务器编程的重要组成部分。(4) JavaScript技术概述JavaScript是一种基于对象( Object) 和事件驱动( Event Driver) 并具有安全性能的脚本语言, 它所能提供的功能非常强大。JavaScript是一种简洁的面向对象的描述语言, 是专门用来开发Internet客户端和服务器端的应用程序, 它能够被轻易的嵌入到HTML文件中, 使用JavaScript浏览器以回应使用者的需求事件而不用经过网络来回传资料, 这样, 使用者的资料就能够直接被客户端应用程序所处理, 它的出现弥补了HTML语言的缺陷, 它是Java与HTML折衷的选择9(5) XML技术概述从1998年2月W3C正式推出XML( eXtensible Markup Language的缩写, 意为可扩展的标记语言) 后短短的三年间, XML以惊人的速度在广大的设计人员中传播开来。随着Internet的飞速发展, HTML开始对更多的网络设计要求显露出疲态。XML也就是在这种大环境下孕育而生的10。(6) Struts 概述Struts使用Model2体系结构。 ActionServlet 负责控制流程。另外一个Struts类, Action, 负责存取业务逻辑类。当ActionServlet类从窗口中获得一个请求时, 它使用请求的URI( 也称为路径) 来决定是哪一个Action来处理该请求。一个Action能够检验输入的合法性、 经过业务逻辑层来读取数据库或者其它数据服务中的信息。要校验输入的合法性或者是使用该输入来修改数据库中的内容, Action需要用户提交给它处理数据。为了避免每一个Action都要处理从请求中输入数据的操作, Struts将这些输入数据绑定到JavaBean中。每一个这样的Bean都是Struts中ActionForm类的子类。ActionServlet经过查看请求的路径就能够决定哪一个ActionForm用来包含输入数据。这些ActionFormod 类都应该是org.apache.struts.action.ActionForm的子类。每一个HTTP请求都必须有一个HTTP响应。一般而言, Struts自已并不生成响应, 而是将请求转发到其它的资源上去例如JSP页面。Struts提供一个名为ActionForward的类来将逻辑名保存到每个面的路径。当业务逻辑部分已经执行完成后, Action会选择一个ActionForward, 而且将它返回给每个总控servlet。总控Servlet 会使用在该Action Forward中存储的物理路径来调用对应的页面来完成HTTP响应部分。Struts将所有这些方面的细节信息都定义在ActionMapping对象中。每一个ActionMapping对象都对应于一个指定的路径。当该路径被请求时, 总控servlet会获取对应的ActionMapp world wide webing对象。该对象会告诉总控servlet该使用哪些Action,ActionForm和ActionForward对象。全部有关 Action,ActionForm, ActionForward以及ActionMapping的信息和其它的配置信息都在Struts-config.xml文件中声明。ActionServlet在启动的时候会读取该文件, 而且创立包含所有这些配置对象的数据库。在运行时刻, Struts会使用这些对象, 而不是文件本身11。(1) Spring 概述Spring 是一个开源框架, 是为了解决企业应用程序开发复杂性而创立的。框架的主要优势之一就是其分层架构, 分层架构允许使用者选择使用哪一个组件, 同时为J2EE应用程序开发提供集成的框架。Spring提供了一种轻量级的解决方案, 用于建立”快装式企业应用”。在此基础上, Spring还提供了包括声明式事务管理, RMI或Web Service 远程访问业务逻辑, 以及能够多种方法进行的持久化数据库的解决方案。另外, Spring 还有一个全功能的MVC柜架, 并能透明地把AOP集成到用户的软件中去12。2.4系统的数据流图数据流图即DFD(Data Flow Diagram)图。是用于分析系统数据流程的图形, 意在让用户理解系统的功能、 输入、 输出和数据存储等。BBS系统的第一层数据流图如图2-1所示, 描述系统由哪几部分组成, 各部分之间有什么联系13。管理员用户BBS系统管理用户管理版块管理主题管理用户组登录发送短信发表回复发表主题注册图2-1 BBS系统的数据流图( 第一层) 注销登录管理用户组权限管理版块权限增加好友删除好友增加黑名单删除黑名单2.5用例图用例是系统、 子系统或类和外部的参与者(actor)交互的动作序列的说明, 包括可选的动作序列和会出现异常的动作序列。用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约。在UML中, 用例用一个椭圆表示, 用例名往往用动宾结构或主谓结构命名14。参与者是指用户在系统中的扮演的角色, 其图形化表示是一个小人。BBS系统的用例有用户注册、 登录、 注销、 浏览主题、 发表主题、 发表回复、 查看短信、 发送短信息、 删除短信; 管理员管理用户、 管理主题、 管理用户组、 版块权限、 管理用户组权限。用例图如图2-2所示。注册登录注销浏览主题发表回复发表主题发送短信查看短信删除短信<<use>>管理用户管理版块管理主题管理用户组管理用户组权限<<use>><<use>>图2-2 BBS系统的用例图管理员用户管理版块权限<<use>>增加好友删除好友增加黑名单删除黑名单修改个人资料3总体设计3.1功能分析后台管理模块BBS系统功能模块前台显示模块图3-1 BBS系统功能模块图BBS系统分为前台和后台两个模块。系统的功能模块图如图3-1所示。前台模块的使用对象包括了所有用户( 管理员、 用户、 游客) , 提供的功能包括注册帐号、 用户登录、 用户注销、 浏览文章、 发表新主题、 回复主题、 增加好友、 删除好友、 增加黑名单、 删除黑名单、 查看短信息、 发送短信息、 删除短信息、 修改个人信息。如图3-2所示。前台显示模块发表主题发表回复删除短信息用户注销浏览主题用户登录用户注册增加黑名单修改个人信息增加好友删除好友删除黑名单发送短信息查看短信息图3-2 BBS系统前台功能模块图后台模块的使用对象为管理人员( 版主、 管理员、 超级管理员) , 提供的功能包括管理用户、 管理版块、 管理主题、 管理用户组、 功能权限管理、 版块权限管理。后台功能模块如图3-3所示。后台管理模块版块管理用户管理主题管理用户组管理功能权限管理版块权限管理查询版块新增版块删除版块修改用户删除用户修改主题属性删除主题增加用户组查询用户组删除用户组新增版块权限查询功能权限删除功能权限新增功能权限查询版块权限删除版块权限图3-3 BBS后台功能模块图3.2数据库设计根据前面的需求描述, 本系统中能够抽象出来的数据模型有: 用户(user)、 模块(module)、 主题(topic)、 回复(retopic)、 好友关系(friends)、 用户短信息(note)、 用户组(groud)、 功能(function)、 功能权限(group_has_function)、 模块权限(modright)模块版主(user_has_module)、 积分(integral)。根据需求分析, 可设计如下表: (1) 用户信息表: 用户ID、 用户名、 密码、 E-mail地址、 密码提示问题、 提示问题答案、 是否公开注册信息、 真实姓名、 性别、 出生年月日、 联系电话、 详细地址、 邮政编码、 用户签名档、 用户头像、 QQ、 注册时间、 用户组、 用户积分、 用户登录次数、 最后登录时间、 发表的帖子数、 被推荐的精华帖数、 用户最后登录的IP(2) 论坛模块表: 模块ID、 模块名、 上级模块ID、 模块介绍、 模块一天的总主题数、 模块主题总数、 模块回复总数、 模块状态(1普通模块、 2会员论坛、 3嘉宾论坛、 4加密论坛、 5关闭论坛)、 是否审核(false否、 true是)、 加密论坛的密码、 模块创立时间论坛主题表: 主题ID、 主题名、 主题内容、 主题发布者、 所属模块、 主题状(3) 表示在审核中、 1表示审核经过、 2表示草稿)、 访问限制积分、 点击数、 是否为精华帖子、 是否置顶、 被创立时间(4) 主题回复表: 回复帖子ID、 回复主题ID、 回复标题、 回复内容、 回复者ID、 回复时间、 是否屏蔽( false否、 true是) (5) 关系表: 好友ID、 用户名、 申请的好友用户名, 好友标记( 0黑名单、 1好友、 2未确认好友) (6) 用户短信息表: 短信ID、 发信者、 收信者、 短信标题、 短信内容、 发信时间、 发信标记( 0已删除1已发送2草稿) 、 收信标记( 0已删除、 1已读, 2未读) (7) 用户组表: 组ID、 用户组名、 组描述(8) 功能表: 功能ID、 功能名、 功能信息(9) 功能权限表: 用户组ID、 功能ID(10) 模块权限表: 权限ID、 用户组名( 外键) 、 访问模块ID, 访问权限(11) 模块版主表: 用户ID、 模块ID(12) 积分表: 积分ID、 积分、 等级4详细设计与实现4.1数据库连接系统采用JSPStruts+Spring架构, 数据库采用MySQL, 使用Spring的配置文件beans.xml连接数据库, 其连接数据库的配置信息如下: <bean id="dataSource" destroy-method="close" class= "mons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:/127.0.0.1:3306/bbs?autoReconnect=true"/><property name="username" value="root"/><property name="password" value="123"/></bean>使用注入Dao的形式进行数据库操作, 在Dao中实现对数据表的增加、 删除、 查询、 修改操作, Dao不进行其它的逻辑操作。前台JSP页面产生的请求交由对应的Action进行逻辑操作, 当其要对数据库进行操作时, 经过WebApplicationContext 对象获取Dao, 将要操作的对象的相关参数传给Dao即可。这就是对接口编程, 使各个模块之间低耦合, 有利于程序的可扩展性。4.2前台显示模块前台显示模块包括用户的一些功能, 具体的可分为用户注册、 用户登录、 用户注销、 修改个人信息、 增加好友、 删除好友、 增加黑名单、 删除黑名单、 查看短信息、 发送短信息、 删除短信息、 查看版面、 查看主题、 查看回复、 发表主题和发表回复等功能。由于主题是在版块下存在的, 因此在版块下的任何地方都能够发表主题, 而回复只能是针对主题进行回复, 因此必须在主题下才能发表回复, 也就是在主题页面下才能点击发表回复。现将部分功能说明如下: (1) 用户注册: 新用户在login.jsp页面中输入用户名, 密码, 密码提示问题、 提示问题答案、 安全邮箱, 点击提交按钮, 数据提交到LoginAction.java中进行处理, 在LoginAction.java中, 如果用户名已经有人使用则返回注册页面, 否则提示用户注册成功, 并跳转到登录页面entry.jsp。(2) 用户登录:用户在有帐号的前提下, 能够在登录页面entry.jsp或主页bbs.jsp中输入用户名和密码点击登录, 系统将用户名和密码提交到LoginAction.java中的entry()方法, 将用户提交的用户名和密码再转交给后台的Dao进行查询, 如果有这样的一条记录存在则登录成功, 将用户的个人信息保存在浏览器端的Session中, 否则返回登录页面, 并提示用户名或密码错误。(3) 用户注销: 已登录用户在退出网站时注销登录状态, 系统将请求交给LoginAction.java的loginOut()方法处理, 在loginOut()方法中修改用户最后离线时间, 将修改保存到数据库中, 并将浏览器端的Session的user属性移除, 系统返回主页。用户同时失去登录用户的权限, 以游客身份访问网站, 只能浏览主题, 不能发表主题, 也不能发表回复。(4) 查看版面: 首页显示BBS的版块及主要信息, 点击版块名进入版块下会显示主题列表, 点击主题名能够进入主题页面。首页index.jsp采用<jsp:forward page="/bbs.do"/> 方法将请求交给BbsAction.java处理, 在BbsAction中从数据库取出所有版块的信息及每个版块下的最新主题信息, 并将取出的数据保存在JSP的Session对象中, 数据取出后交给bbs.jsp页面, 在bbs.jsp页面中将取出的结果显示出来。(5) 查看主题: 当用户在主页上点击版块名时, 会产生一个动作, 向服务器产生一个请求, 服务器将程序交给TopicAction.java处理, 在TopicAction.java中取出模块下的所有主题及最后发表回复的作者的信息并将其存入request对象中, 处理完之后返回到版块下的主题显示页面。(6) 查看回复: 用户在主题显示页面点击主题名时会产生查找主题信息动作, 系统将这个动作交给ReTopicAction.java来处理, 在ReTopicAction.java中请求交给后台DAO, 从DAO中取出数据表中的项, 要取的内容有该主题所在的版块信息、 该主题信息、 该主题下的回复信息, 该主题和其回复的作者的部分信息。4.3后台管理模块管理员又可分为版主、 管理员、 超级管理员。版主的权限最小, 只能维护自己版面的主题, 包括删除主题、 将主题置顶、 设置精华帖等。管理员的功能比版主的功能要多, 管理员能够删除用户, 修改用户权限、 增加用户组、 删除用户组、 增加版块、 删除版块、 查询版块、 删除主题、 修改主题属性、 新增功能权限、 查询功能权限、 删除功能权限、 新增版块权限、 查询版块权限、 删除版块权限。管理员不能删除其它的管理员, 管理员只有超级管理员才能够设置和删除。超级管理员具有网站的一切功能。现将部分功能介绍如下: 管理员作为特殊的用户, 经过bbs.jsp或entry.jsp页面进行登录到主页, 在主页上如果是管理员则显示后台管理超链接, 管理员点击后台管理, 进入管理界面manage.jsp, 在管理页面有版块管理、 主题管理、 用户管理、 用户组管理、 用户组权限管理、 版块权限管理。用户点击版块管理, 系统将请求提交给ModuleAction.java的manage方法, 在manage方法中取出所有的版块, 跳转到manageModule.jsp, 在这个页面将所有的版块都显示出来, 管理员能够在这个页面直接点击删除链接, 将所在版块ID提交到后台, 在ModuleAction.java的delete方法中将版块及该版块下的主题删除, 同时也将该版块下的主题的回复全部删除。ModuleAction.java 的delete方法的关键代码如下: public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) / TODO Auto-generated method stubWebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.servlet.getServletContext();