零点起飞学Java之Web编程实例-BBS系统_第1页
零点起飞学Java之Web编程实例-BBS系统_第2页
零点起飞学Java之Web编程实例-BBS系统_第3页
零点起飞学Java之Web编程实例-BBS系统_第4页
零点起飞学Java之Web编程实例-BBS系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第18章 Web编程实例BBS系统Web应用开发是Java语言应用非常多的一个方面。本章通过实现一个简单的BBS系统,展示了Java语言中JSP、Servlet技术在实际系统开发过程中的具体应用。本章实例主要涉及以下知识点。 JSP知识;Servlet知识;JDBC数据库编程知识。通过学习本章实例,读者需要重点掌握Java语言Web编程知识的具体应用。118.1 实 例 概 述本章实例是开发一个简单的BBS(Bulletin Board System)。BBS通称论坛,即电子公告系统,又名电子公告专板、布告板、留言簿。BBS是网络内容的提供者,如商业网站和个人主页为上网者提供的自由讨论、交流信

2、息的地方。BBS的划分标准有很多种。如根据所属者不同,可分为政府BBS、企业BBS、校园BBS、个人BBS。根据讨论的内容不同,又可分为综合类BBS、专题类BBS。根据讨论专题,又可分为体育、科技、时政等。218.1 实 例 概 述本章实例主要是为了加强使用JSP、Servlet进行Web应用开发方面的能力,在功能上相对简单。该实例主要是通过使用JSP、Servlet及JDBC技术开发一个简单的论坛。该论坛没有划分更多的栏目,可以作为一种专题论坛使用。系统的用例图如图所示。3图18.1 系统用例图该论坛主要包括三类用户:游客(未注册用户)、一般用户(已注册用户)和管理员。其中,游客具有用户注册

3、、论坛浏览功能。一般用户具有论坛浏览和主题管理的功能。管理员具有论坛浏览、主题管理和用户管理的功能。下面的章节就从系统设计、数据库设计、功能模块实现等方面详细介绍该系统的开发过程。418.2 系 统 设 计对系统需求进行了充分地分析之后,在具体开发之前需要进行一下总体设计。系统设计包括系统总体结构、构建开发环境、确定系统工程目录这几个方面。下面分别对这几个方面进行介绍。518.2.1 系统总体结构在对整个系统进行需求分析的基础上,将系统功能划分为5大功能模块:论坛浏览、用户注册、系统登录、主题管理及用户管理。系统的功能结构图如图所示。618.2.1 系统总体结构下面简单介绍一下各个功能模块所包

4、含的子模块及其主要功能。论坛浏览:用于浏览论坛中所发布的信息,三类用户均有此功能。用户注册:如果游客想成为一般用户,则首先需要进行注册。用户注册后,便可以以一般用户的身份登录论坛。系统登录:实现一般用户及管理员的登录功能。登录系统后,根据用户身份的不同而具有不同的功能权限。主题管理:一般用户及管理员可以对主题进行各种管理操作。具体包括发新帖、回帖、修改本人所发的帖子、删除帖子等功能。用户管理:提供给管理员进行用户管理操作。718.2.2 构建开发环境本系统是Java Web编程方面应用的实例,同时使用了数据库系统。根据系统的实际情况,采用如下所示的开发环境。操作系统:Windows 7;Web

5、服务器:Tomcat 7.0;数据库系统:MySql 5.5;编程语言:JDK 7.0;开发工具:MyEclipse 10。818.2.3 系统工程目录在开发一个实际的应用系统时,应该规划好系统工程的文件结构。有规划的工程文件结构便于在开发过程中进行管理,也使得开发工作的内容更加清晰。在Eclipse开发环境下,本系统最终的工程目录结构如图所示。918.2.3 系统工程目录系统的工程名称为bbs,所包含的文件夹及功能包主要有以下几个方面。src目录:用于存放系统的所有源代码。源代码按照包结构进行组织。business包:存放与业务实现有关的类。db包:存放数据库操作类。entity包:存放系统

6、的实体类。filter包:存放系统过滤器的实现类。util包:存放系统的实用工具类,为其他包共用。forum文件夹:存放与论坛操作有关的JSP文件。image文件夹:存放系统用到的图片。user文件夹:存放与用户操作有关的JSP文件。lib文件夹:存放系统运行所必需的库文件,需要加入到Eclipse的Build Path中。1018.3 数据库设计本系统采用MySql数据库进行开发。在对系统进行需求分析、总体设计的基础上,得出本系统的数据库模型,如图所示。1118.3 数据库设计数据库模型中主要包括3张数据库表。每张表结构的详细说明如表18-1表18-3所示。1218.3 数据库设计数据库模型

7、中主要包括3张数据库表。每张表结构的详细说明如表18-1表18-3所示。1318.3 数据库设计数据库模型中主要包括3张数据库表。每张表结构的详细说明如表18-1表18-3所示。1418.4 公 共 模 块在系统开发过程中,经常需要设计一些公共模块,供系统中其他模块共同调用。本系统的公共模块主要由db、util和filter三个包来实现。下面分别对这三个包进行介绍。1518.4.1 db包db包主要用于存放数据库操作类,系统与数据库的交互最终都是通过调用db包中的相关类来实现的。db包的构成如表18-4所示。序号类 名标 识实 现 功 能1BaseDaodb.BaseDao基础数据库操作类2T

8、opicDaodb.TopicDao主题数据操作类3UserDaodb.UserDao用户数据操作类4Pagerdb.Pager分页功能辅助类1618.4.1 db包1BaseDao类BaseDao类用于完成最基本的数据库操作,包括建立数据库连接、执行sql语句等。2TopicDao类TopicDao类用于对主题及其回复信息进行数据库操作,包括查询单个主题实体、多条主题信息列表等。3UserDao类UserDao类用于对用户信息进行数据库操作,目前仅定义了一个getUserlist()方法。4Pager类在Web应用系统开发过程中,对查询结果进行分页显示是经常需要进行的操作。Pager类就是一

9、个实现分页功能的辅助类,结合其他类即可实现分页功能。1718.4.2 util包util包主要用于存放一些实用工具类。系统所有模块中经常需要使用的一些工具类或系统常量等可以在该包中定义。util包的构成如表18-5所示。序号类 名标 识实 现 功 能1Constantutil.Constant系统常量类2DateUtilsutil.DateUtils日期工具类3TransCodeutil.GlobalVar转码工具类1818.4.2 util包1Constant类Constant类用于定义系统常量。在本系统中将权限认证过滤器需要跳过的url作为字符串数组常量进行定义。2DateUtils类Da

10、teUtils类是日期工具类。在系统实现中,经常碰到一些信息需要用日期型进行表示,如帖子的发布时间。对于日期型数据,还会经常进行各种运算操作,如转换特定格式、返回指定天数后的日期等。DateUtils类定义了各种日期操作方法,所有方法都是static类型的,因此方便了对日期型数据操作时直接调用。3TransCode类TransCode类是转码工具类。在Web应用系统开发过程中,经常需要对字符进行转码操作,如中文字符集GBK与其他字符集之间的转换。TransCode类为此专门定义了一些字符转码方法。1918.4.3 filter包filter包定义了本系统所使用的过滤器类。在Web应用系统开发过

11、程中,经常会遇到来自客户端对某些相关页面进行统一编码的请求以及对客户端进行统一认证和处理的情形。对这些问题,可以采用Servlet中的过滤器来解决。filter包的构成如表18-6所示。1CharSetFilter类CharSetFilter类用于对来自客户端的所有请求页面进行统一编码。由于本系统使用的语言为中文,所以系统通过CharSetFilter类将所有请求页面统一编码为GBK。2AuthoritiesFilter类AuthoritiesFilter类用于对客户端进行统一认证。序号类 名标 识实 现 功 能1CharSetFilterfilter.CharSetFilter编码过滤器类2

12、AuthoritiesFilterfilter.AuthoritiesFilter认证过滤器类2018.5 系 统 登 录登录模块用于实现系统登录功能,也是进入系统的入口。在浏览器中输入本系统的访问url后出现的首页面即为系统登录页面。登录页面针对系统的3类用户,这3类用户分别具有不同的登录方式。对于未注册用户来说,可以以游客身份登录。对应已经注册的一般用户及管理员用户,需要输入用户名、密码进行登录。系统的登录模块主要由index.jsp和login.jsp两个文件来实现。下面分别对其进行介绍。2118.5 系 统 登 录系统初始化index.jspindex.jsp文件主要用于实现登录模块的

13、视图功能部分。在具体使用时,以游客身份登录系统直接单击“游客”按钮即可,不需要输入用户名、密码。已经注册的一般用户及系统管理员需要输入用户名、密码,单击“登录”按钮进行登录。从上述代码中可以看出,不管是单击“游客”按钮还是“登录”按钮,最终都是要转到login.jsp文件完成登录。系统登录login.jsplogin.jsp负责登录模块的业务功能实现。程序首先根据传入参数判断登录用户身份。如果为游客,则将“游客”作为用户的name信息保存到系统session中,然后直接跳转到系统主页面,登录成功。如果为一般用户或管理员,需要连接数据库验证用户名、密码是否有效。如果无效,则系统返回到登录页面,给

14、出错误提示,登录失败;如果有效,则将用户相关信息保存到session中,跳转到系统主页面,登录成功。2218.6 用 户 注 册用户注册模块实现新用户的注册功能。在系统的登录页面上单击“注册”按钮,则进入用户注册页面。注册用户register.jspregister.jsp文件主要用于实现用户注册模块的视图功能部分。用户在注册页面上填写完表单信息后,单击“提交”按钮,系统将提交表单内容跳转到addUser.jsp页面。增加用户addUser.jspaddUser.jsp负责用户注册模块的业务功能实现。程序首先获取register.jsp提交的表单内容,然后生成一条insert语句。最后执行数据

15、库操作,即在user表中插入一条记录。数据库插入操作成功后,页面显示“注册成功”信息。2318.7 论 坛 浏 览登录系统成功后,即进入到论坛系统的主页面。以不同身份登录的用户看到的系统主页面稍有不同。以游客身份登录的用户,只能浏览论坛的现有内容(一般用户及管理员当然也具有此功能)。论坛主页面以列表的形式列出了当前系统现有的主题。其中,每一行描述的只是该主题的简要信息。单击某一主题,可以查看该主题的详细内容。如果论坛的主题信息为多页,则系统进行分页显示。可以通过单击主页面下面的“上一页”、“下一页”等按钮实现翻页查看。论坛浏览功能主要由business包下的ForumServlet类及foru

16、m文件夹下的forumList.jsp和forumDetail.jsp文件来实现。下面分别对其进行介绍。2418.7 论 坛 浏 览主题信息提取ForumServlet类系统登录成功后即转向ForumServlet。ForumServlet类用于在数据库中提取主题信息,将主题数据返回给论坛主页面以列表形式显示。另外,ForumServlet类在数据库中提取数据时实现了按分页提取数据的功能。主题列表forumList.jspforumList.jsp负责主题信息的页面展现。其中,主题字段被作为超链接。单击该链接将跳转到forumDetail.jsp页面,可以查看相应主题的详细内容。主题详细内容f

17、orumDetail.jspforumDetail.jsp用于显示指定主题的详细信息,程序首先查询指定编号的主题信息,然后将查询结果按特定格式进行显示。另外,如果该主题有回复内容,页面下方会同时显示回复信息的详细内容。2518.8 主 题 管 理一般用户及管理员除了能浏览论坛外,还具有管理主题的功能。主题管理主要包括发布新帖、回复帖子以及对自己发的帖子进行修改、删除。下面分别对这几种操作进行介绍。2618.8.1 发布新帖一般用户或管理员登录系统后,在论坛主页面上单击“发帖”链接,即进入发布新帖页面。用户填写完主题、内容信息后,单击“提交”按钮,即完成发帖操作。发布新帖的功能主要由addTop

18、ic.jsp和AddTopicServlet类实现。下面分别对其进行介绍。addTopic.jsp该文件主要用于实现发布新帖的视图功能部分。用户填写完主题、内容信息后,单击“提交”按钮,程序提交表单到addtopicservlet。AddTopicServlet类AddTopicServlet类用于实现发布新帖的业务功能。程序首先获取addTopic.jsp提交的表单内容,然后生成一条insert语句。最后执行数据库操作,即在topic表中插入一条记录。2718.8.2 回复帖子用户在查看主题信息详细内容的页面可以单击“回复”按钮对该主题进行回复。用户填写完回复主题、内容信息后,单击“提交”按

19、钮,即完成回复操作。回复帖子的功能主要由backTopic.jsp和BackTopicServlet类实现。下面分别对其进行介绍。backTopic.jsp该文件主要用于实现回复帖子的视图功能部分。用户填写完回复主题、内容信息后,单击“提交”按钮,程序提交表单到backtopicservlet。BackTopicServlet类BackTopicServlet类用于实现回复帖子的业务功能。程序首先获取backTopic.jsp提交的表单内容,然后生成一条insert语句。最后执行数据库操作,即在back表中插入一条记录。2818.8.3 修改帖子对于本人发布的帖子,用户在查看主题信息详细内容的

20、页面可以单击“编辑”按钮对该帖子进行修改。用户修改完帖子信息后,单击“提交”按钮,即完成修改操作。修改帖子的功能主要由updateTopic.jsp和UpdateTopicServlet类实现。下面分别对其进行介绍。updateTopic.jsp该文件主要用于实现修改帖子的视图功能部分。用户修改完帖子信息后,单击“提交”按钮,程序提交表单到updatetopicservlet。UpdateTopicServlet类UpdateTopicServlet类用于实现修改帖子的业务功能。程序首先获取updateTopic.jsp提交的表单内容,然后生成一条update语句。最后根据帖子的类型,更新topic表或back表中指定编号的记录。2918.8.4 删除帖子对于本人发布的帖子,用户在查看主题信息详细内容的页面可以单击“删除”按钮删除该帖子。删除帖子的功能由DeleteTopicServlet类实现。程序首先获取请求参数,然

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论