1、 本科 毕业 设计 (论文 ) (二零 届) 一个简单网络论坛系统的设计与实现 所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 摘要 :Java 技术随着 Internet 的迅猛发展,已经成为软件业的主流技术。为了编码的规范化和标准化,各种框架技术不断涌现出 来,其中最有名的是 Struts2、 Spring和 Hibernate。 Struts2.0 版本是在 2007 年推出的全新框架,它改进了 Strutsl 的一些主要不足。 Struts2 比 Strutsl 更加简单,更加灵活,例如它取消了 ActionForm 组件、支持OGNL 语言,支
2、持多种视图技术,如 JSP, FreeMarker,等。 Hibernate3 借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件 一切都会按照您的想法来定义 注释直接嵌入到您的 Java 类中,并提供一种强大及灵活的方法 来声明持久性映射 .本文首先讨论了 Struts2、 Spring2 和 Hibernate 基础及其相关技术,包括各个架构的关键支撑技术。最后在 BBS 论坛 系统中应用了 Struts2、 Spring 和 Hibernate 整合技术。 关键字 : Java; Struts; Spring; JSP; BBS 论坛 The Desi
3、gn and Implementation of A Simple BBS System Abstract: With the rapid development of Interne, Java technology has become a mainstream technology of the software industry. In order to process the normalization and standardization in coding, frameworks technology continues to emerge, the most famous o
4、f them is the Struts2, Spring and Hibernate. Struts2.0 version is launched in 2007, a new framework, which improves the major deficiencies in Strutsl. Struts2 is more than simple Strutsl, more flexible, for example, it canceled the ActionForm component and supports OGNL language, supports multiple v
5、iew technologies such as JSP, FreeMarker, and so on. With the help of new Hibernate Annotation database, you can map distribution of all the old files in one-time - everything will be defined in accordance with your thoughts - comment directly embedded into your Java class, and provides a powerful a
6、nd flexible way to declare persistent mapping. This article first discusses the Struts2, Spring2 and Hibernate based and related technologies, including the key supporting technologies of each structure. Finally, applied Struts2, Spring and Hibernate integration technology in BBS forum system. Keywo
7、rds: Java; Struts; Spring; JSP; BBS 目录 1 绪论 . 1 2 基本技术介绍 . 2 3 网络论坛详细设计 . 5 3.1 需求分析 . 5 3.2 总体设计 . 5 3.3 实体类设计与实现 . 6 3.4 网络论坛的基本流程 . 9 3.5 网络论坛各页面功能 . 10 3.5.1 网络论坛首页 Article-list.jsp 详细功能及描述 . 10 3.5.2 显示图书详细信息 bookShow.jsp 页面详细功能及描述 . 10 3.5.3 用户发帖 Article-addInput.jsp 页面详细功能及描述 . 10 3.5.4 网络论坛用
8、户登录 User-login.jsp 页面详细功能及描述 . 10 3.5.5 网上论坛注册 User-regist.jsp 页面详细功能及描述 . 10 3.5.6 帖子回复 ArticleBack-addInput.jsp 页面详细功能及描述 . 10 3.5.7 帖子删除 Article-delete.jsp 页面详细功能及描述 . 11 4 系统实现 . 12 4.1 游客注册功能 . 12 4.2 用户登录功能 . 15 4.3 游客的操作 . 16 4.3.1 浏览论坛的所有版块 . 16 4.3.2 浏览论坛帖子的信息 . 17 4.3.3 文件下载 . 19 4.4 普通用户的
9、操作 . 20 4.4.1 用户信息的修改 . 20 4.4.2 添加版块 . 21 4.4.3 发表帖子 . 22 4.4.4 回复帖子 . 23 4.4.5 文件上传 . 23 4.5 管理员的操作 . 25 5 开发工具与环境 . 27 5.1 JDK. 27 5.2 MYECLIPSE . 27 5.3 TOMCAT . 27 5.4 MYSQL 数据库 . 27 5.5 LOG4J. 27 6 总结 . 28 致谢 . 错误 !未定义书签。 参考文献 . 29 1 1 绪论 网络论坛专业叫法叫做 BBS,是用户可以交换信息的系统,各地的用户都可以通过本地的业余 BBS 站与远在异地的
10、网友互通信息。 在国外, 1978 年在美国芝加哥便开发出了最早的 BBS 系统,但 只是基于 8080 芯片的CBBS/Chicago(Computerized Bulletin Board System/Chicago。直到 1983 年,通 Capital PC User Group( CPCUG)的 Communication Special Interest Group 会员的努力,改写出了个人计算机系统的 BBS。我国直到 1995 年,随着计算机及其外设的大幅降价, BBS 才逐渐被人们知道。但是之后便以惊人的速度发展。国内的 BBS 系统大致分两类:一类是有商业性质的。一般是有
11、大公司建立,人们利用其交流对 商品的看法,解决商品的使用等问题。一类是个人或小型集体建立的。有商业性质的 BBS 要缴纳一笔费用,而非商业性质的网络论坛一般都有志愿者开发,他们推动了中国计算机网络的健康发展,为广大网友提供信息交流的平台。 随着 BBS 系统的发展,国内已经出现了一些多线站,一次可以允许多个用户同时访问,解决了多人同时拨号一个站台发生冲突的问题。随着 WEB2.0 时代的到来, BBS 将朝着以下两个方面发展:( 1) BBS 论坛系统将朝着即时性方面发展。使论坛成员在不用刷新页面时就可以看到别人刚刚发的帖子。( 2) BBS 论坛系统也将朝着图形 化方向发展。通过外形的不同来
12、区分不同社区的朋友而不是通过 ID。2 2 基本技术介绍 本次论坛将采用 Java 程序语言后台开发,整合 Hibernate, Struts2, Spring 应用框架,使用 JSP作为前台页面的实现,采用 jQuery和 Javascript技术进行前台开发, MYSQL作为数据库系统, Tomcat作为服务器,将实现一个提供大家交流的系统,使用户可以充分交流自己的知识,看法,经验。 MVC 设计模式。 MVC 设计模式将应用程序分为模型,视图,控制器三个部分,按照模型层,视图层,控制层进行分解,从而使 得整个系统责任明确、接口清晰,加快了设计开发过程。模型层就是指业务逻辑的处理和数据储存
13、。它分为两层:业务逻辑模型和数据模型。模型接收视图的数据,并返回最终的处理结果。数据模型是指对数据的持久化,它是线路对视图和模型的交换的支持。实现时把“做什么”和“怎么做”分离,这样可以实现业务逻辑的重用。视图层主要用来展现用户所需的数据,他是用户和系统进行交互的界面,这部分工作一般可以由美工人员进行开发和维护,一般可以采用 HTML 页面, JSP 等技术。一般来说,视图只接收来自模型的数据并显示给用户,以及将用户界面的输入数据 和请求传递给控制和模型。 MVC 设计模式对于视图的处理仅是视图的采集和处理,以及用户的请求而视图上业务的处理,业务流程的处理和状态的改变交个模型层来处理。视图部分
14、大致的处理流程是:页面模板定义布局,视图标签的具体内容,而页面布局初始化并加载页面。用户部件提交参数,通过表示层的校验,将数据提交给业务实体,即模型。控制层是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层就像一个中转站,从用户那里接收请求然后根据参数将模型与视图匹配,将选择符合要求的视图转发给用户。 Java开发 WEB Application 有 几 种 符 合 MVC 设计模式的开发方式: 1:JSP+Servlet+JavaBean(EJB)2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model) 3: SSH (S
15、truts + Spring + Hibernate) 1。 Hibernate 的 JDBC 封装和注释简介。本次网络论坛的开发将使用这些目前广泛运用的开发技术。利用 Hibernate 对 JDBC 进行了非常轻量级的对象封装,避免去写使用 JDBC 连接数据库的重复的代码和 SQL 语句 ,可以使用面向对象的思维来对数据库进行增删改查等操作。传统的Hibernate 的配置依赖于外部 XML 文件,数据库映射是启动时加载 XML 映射 文件进行的。这需要写大量的 Hibernate 映射文件。 Hibernate 注释巧妙的借助 Hibernate Annotation 库,讲一切的映射
16、关系一注释的形式嵌入到 Java 类中,强大而且灵活。 Hibernate 核心接口 2: Session 接口 。 Session接口负责执行被持久化对象的 CRUD 操作 (CRUD 的任务是完成与 数据库 的交流,包含了很多常见的 SQL 语句。 SessionFactory 接口 。 SessionFactory 接口负责初始化 Hibernate。它充当数据存储源的代理,并负责创建 Session 对象。一个项目通常只需要一个 SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。 Configuration 接口 。 C
17、onfiguration 接口负责配置并启动 Hibernate,创建 SessionFactory 对象。在 Hibernate 的启动的过程中, Configuration类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory 对象。 Query 和 Criteria 接口 。Query 和 Criteria 接口负责执行各种数据库查询。它可以使用 HQL 语言或 SQL 语句两种表达方式。 Struts 简介。利用 Struts2 接受客户端的参数,根据请求的参数转发请求给适当的控制器,来控3 制视图的转发,是结构层次分明,可重用性高。 Struts 的作用避免了
18、在 JSP 页面当中写太多的代码,做到保持 JSP 的界面整洁,同时可以实现 MVC 模式, Struts 的根本作用就是方便以后对程序的修改。在视图层可以使用 JSP 及其标签外, Struts2 也提供了强大的标签库。在模型层, Struts 提供Action 对象,来管理业务逻辑的调用实现分离逻辑业务。 Struts 通过配置 struts.xml 很条理地帮你实现了上述事情,减轻了很多工作量, Strust2 在 Struts1 的基础上,增加了很多东西,标签库进行了扩充,实现上传下载文件非常方便等等 3。 Spring 简介。 Spring AOP 模块为基于 Spring 的应用程
19、序中的 对象提供了事务管理服务, Spring则完全是一种架构型的框架了,它不属于 J2EE 应用中的任何一个层,但它提供了对象依赖注入的思想,并且为每个层中遇到的实际问题提供了大量现成的模板类,使用这些模板类的方法很 easy,大多数情况下只需要你在配置文件里配置一下就可以实现诸如事务管理或安全性控制这样的复杂问题。 Spring 通过一种称作控制反转的技术。当应用了 IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。 Spring 提供了 面向切面 的丰富支持,允许通过分离应用的业务逻辑 操作 与 系统操作 。应用对象只实现它们应该做的 完成业
20、务逻辑 仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 通过使用 Spring AOP, Hibernate 的增删改查之前开 session,和之后的关闭session 交给了 Spring,减少了程序员的工作量并且并与维护 4。 JSP 简介。 Java EE 环境中的 JSP API 是一个服务器端的脚本。 JSP 提供了一个被嵌入到 HTML的 Java 语言片段,达到与服务器交互的目的 5。 Javascript 与 jQuery 简介。 JavaScript 被设计用来向 HTML 页面添加交互行为 , 是一种脚本语言(脚本语言是一种轻量级的编程语言)
21、 。 在 HTML 基础上,使用 Javascript 可以开发交互式 WEB网页 。 Javascript 的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容 。 jQuery 是轻量级 Javascript 脚本库,熟悉使用 jQuery 可以很容易写出兼 容各种浏览器的页面 6。 jQuery 使用户能更方便地处理 HTML documents、 events、实现动画效果,并且方便地为网站提供 AJAX 交互。 本次网络论坛系统使用 Struts2 负责 MVC 模式里的“ C”,控制业务逻辑层与表现层的交互,调用业务逻辑层,并将
22、业务数据返回给表现层表现。实现本网络论坛的业务逻辑层以 DAO 层为基础,通过 DAO 组件的包装,完成系统所需要的业务逻辑。而 DAO 层负责与持久化对象交互。该层封装了数据的增删改查等操作。 DAO 模式需要为每个 DAO 组件编写 DAO 接口,同时至少提供一个实现类 ,根据不同的需要,可能有多个实现类。用 Spring 容器代替 DAO 工厂,完全避免了使用工厂模式,因为 Spring 本身是个非常强大的工厂,可以让 Spring 充当 DAO 工厂。无需程序员自己实现工厂模式,只需将 DAO 组件配置在 Spring 容器中,由 ApplicationContext 负责 DAO 组
23、件的创建即可。借助于 Spring 提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用 DAO实例。本系统采用 B/S 三层结构,使用 JSP 技术进行动态页面设计,运用 JavaBean 对程序的关键代码进行分装,如对实现分页功能 的代码进行分装。用 Javascript, Struts 技术实现对注册,登录失4 败时的反馈信息。使用 Tomcat 作为 WEB 服务器, MySQL 作为数据库管理系统 7。 5 3 网络论坛详细设计 3.1 需求分析 网络论坛系统主要是实现网上自由发言,回复等功能的系统。一个典型的网络论坛一 般都需要实现帖子信息的正确显示、具体帖子的内容以及对某个
24、帖子的多个回复、客户信息注册登录管理、帖子处理等模块 8。 根据网络论坛的基本需求,本系统需要完成的具体任务如下: 1. 帖子显示及浏览 : 当用户进入论坛系统时,应该在主页面 中看到分页效果后的信息 以供用户浏览。点击某个帖子链接,可以进入浏览帖子详细信息以及对该帖子的回复信息。 2. 帖子管理:当用户的发言不够合体时,带有管理权限的用户可以删除信息不良的帖子。 3. 用户发言:注册成为会员并成功登录的用户,可以发帖分享自己的信息。 4. 用户回复:注册成为会员并成功登录的用户,可以对感兴趣的帖子进行回复 5. 用户注册及登录:为了能够与其他用户进行互动,需要注册。根据注册时提供的用 户名和
25、密码进行登录。 6. 用户信息更改:成为会员的用户随时可 以修改自己的个人信息,比如登录密码。 7. 版块管理:为帖子分类。用户选择相应的版块进入之后发帖,浏览帖子信息。管理员有增加和删除版块的权限。用户有增加版块的权限。 8. 资源分享:为了加强信息的交流,让用户通过此论坛可以学习和获得更多的资料,次论坛特别增添了文件上传和下载模块。为了保证信息的安全,只有注册成会员的用户才能上传资料。同时为了让用户可以更方便的获取资源,即使是非用户,也可以通过这个论坛下载需要的文件资源。 3.2 总体设计 系统组成 .下表中给出了构成网络论坛的各个组件,通过下表,可以从宏 观上了解各个组件的功能。 Ser
26、vice 层是你的系统的业务逻辑体现,一个 Service,应该是在有必要跨多 DAO 操作,或者需要事务时才被调用。 DAO 只应该针对直接的对数据库的 CRUD 操作,然后返回操作结果,不应该有别的逻辑,这样才不会破坏层次。只有 DAO 是可以写出通用的来减少重复代码,因为数据库只有 CRUD 四种操作 。 用户表示层(视图) 控制处理层(控制层) 业务逻辑 层 (模型层 ) Service 层 Dao 层 Article-list.jsp ArticleAction ArticleBackAction Article ArticleBack ArticleService ArticleBackService ArticleDAO ArticleBackDAO Article-detail.jsp Article-addInput.jsp ArticleBack-addInput.jsp User-login.jsp UserAction User UserService UserDAO User-regist.jsp