基于JSP(java)论坛的设计和实现(含源文件)


获取项目源文件,联系Q:1225467431,可指导毕设,课设

摘 要
微型计算机的普及加速了计算机网络的广泛应用和飞速发展。BBS全称为Bulletin Board System(电子公告板)或者Bulletin Board Service(公告板服务)。是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而即使的Internet (​http:​/​​/​baike.baidu.com​/​view​/​11165.htm _blank​)电子信息服务系统。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。BBS (Bulletin Board System)系统以计算机系统、通信技术、数据库、网络技术等信息技术为支撑,在信息服务领域有着日益重要的应用。
本文利用JSP+CSS,HTML+CSS,MYSQL,JAVABEAN,JDBC技术实现了一种基于B/S模式的论坛系统,阐述了BBS的相关理论和开发方法,并根据本项目的实际情况构造了论坛的基本架构。
该论坛系统主要完成了基于JSP技术的信息交流论坛的设计和实现,主要实现了客户端和服务器端的动态交互。该系统包含五个模块:注册登录模块,浏览帖子模块,发帖回帖模块,论坛管理模块,用户管理模块。论文详细的描述了模块的结构、功能以及具体的设计过程。该论坛经测试表明其性能稳定,可广泛应用于各种网络上,作为信息交流和人员沟通的园地。
关键词:JSP, MYSQL, JAVABEAN,论坛系统。
Designing and Implementation of Forum Based on JSP Technique
Abstract
The microcomputer popularization has accelerated the computer network widespread application and the rapid development. BBS(Bulletin Board System)system takes information technology like computer system, communication, database, network technology and so on as the strut ,it becomes more and more important in the information service domain.
This article has realized one kind of pattern forum elaborated based on the B/S by using JSP+CSS, HTML+CSS, MYSQL, JAVABEAN, JDBC technology and instructed the BBS related theory and developing methods and unifies this project the actual situation to produce the forum structure overhead construction. The forum(BBS) is mainly completed the design and realizations of information exchanges forum based on the JSP technique. And it main carry out a dynamic state between the customer and the sever. There are five molds piece: register and login the mold piece, scan the article in the mold piece, article releases and restores the mold piece, announce management mold piece, user management mold piece. The thesis has described module structure、function detailed and has designed process concretely. This forum after teacher and schoolmates test indicated its performance is stable, but widely applies to each kind if network the field which links up as the information exchange and the personnel.
Key words: JSP,SQL,JAVABEAN,BBS
目 录 TOC 1-3
毕业设计(论文)任务书 I
摘 要 II
Abstract III
第1章 绪 论 1
1.1课题的提出 1
1.2 开发背景 1
1.3研究的意义 1
1.4论文研究主要内容 2
第2章 关键技术介绍 3
2.1 MVC开发模式 3
2.2系统分层结构中所用到的技术 3
2.2.1表现层 3
2.2.2控制层 3
2.2.3业务逻辑层和数据持久层 3
2.3系统中所用到的其它关键技术 3
第3章 系统分析 5
3.1 系统功能分析 5
3.1.1用户功能分析 5
3.1.2管理员功能分析 5
3.2 模块需求描述 5
3.2.1 注册登录功能 5
3.2.2用户浏览或修改个人信息功能 6
3.2.3用户浏览帖子功能 6
3.2.4用户发新帖子功能 6
3.2.5用户回复帖子的功能 7
3.2.6管理员管理用户功能 7
3.2.7 管理员管理帖子功能 7
3.3 系统开发环境 8
3.4 可行性分析 8
3.4.1 技术可行性 8
3.4.2系统安全性分析 8
第4章 系统设计 9
4.1 设计指导思想和原则 9
4.1.1 指导思想 9
4.1.2 软件设计原则 9
4.2 系统功能总体设计 9
4.3 系统功能详细设计 10
4.3.1注册登录模块 10
4.3.2直接登录模块 11
4.3.3浏览或修改个人信息模块 12
4.3.4浏览帖子模块 13
4.3.5用户发帖模块 13
4.3.6用户回帖模块 14
4.3.7管理员管理论坛模块 15
4.3.8管路员管理用户模块 15
4.4 数据库设计 16
4.4.1数据库设计介绍 16
4.4.2数据库表格设计 17
4.5 系统界面设计 18
4.5.1首页界面设计 18
4.5.2用户注册登录界面设计 19
4.5.3欢迎界面设计 20
4.5.4用户查看个人信息界面设计 20
4.5.5用户浏览帖子界面设计 21
4.5.6管理员界面设计 22
第5章 系统实现 25
5.1基于JSP、JAVABEAN、SERVLET的MVC架构 25
5.1.1编写控制器Servlet 25
5.1.2编写模型层Javabean 25
5.1.3编写JDBC 26
5.1.4配置成功 26
5.2系统逻辑功能的实现 26
5.3数据库的实现 32
第6章 系统测试 33
6.1 系统测试方法介绍 33
6.2具体测试 34
第7章 结 论 35
参考文献 36
致 谢 37
第1章 绪 论
1.1课题的提出
我们学院是中国第一所笔记本大学”拥有丰富的网络资源而且为每一位学生都配备一台笔记本,这些都极大的方便了我们的生活。这给了论坛系统一个极大的实现价值,希望这个系统能够方便同学们和老师们的工作和生活。
1.2 开发背景
近几年来,借鉴发达国家的成功经验,结合我国的实际情况,伴随着网络应用的不断扩大,远程教育和虚拟大学的出现,网络应用正不断深入人心。人们迫切要求通过论坛系统在线上获得帮助,来提高工作的效率,于是许多基于JSP技术的论坛系统应运而生,高等学校,企事业单位也都纷纷组织研究此类应用的解决方案,并研制开发了大量的不同类型的计算机论坛系统。有力地推动了我国网络论坛技术的发展,并积累了大量有价值的经验。
1.3研究的意义
现今的社会是一个信息飞速发达的社会,其中在信息的交流当中,互联网占据着一个非常重要的位置。人们可以通过在互联网桑收到最新的消息,也可以通过互联网进行信息的交流。而论坛就是大家进行信息交流的其中一个渠道。论坛是一种在Internet网上开放的信息服务系统,通过论坛用户可是方便的实现信息的交换和文件的共享。进入二十一世界,随着计算机科学的发展,论坛网站和数据库技术在Internet中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。网络与人们的工作、生活和学习的关系越来越密切,在人们的生活中起着不可替代的作用。
网上论坛起源于20世纪80年代初。最初,论坛只是用户发布公告信息、讨论问题的在线交流平台,后来,随着网络的普及,论坛的功能越来越丰富,受到广大网民的欢迎。同时,在线技术支持的在线服务也在论坛中开展起来。随着Web技术的发展,Web内容从一些静态页发展到内容丰富的动态页。JSP就是一种完全与平台无关的开发新技术,它集极高的运行效率,较短的开发周期,超强的开发周期,超强的扩展能力,完全开放的技术标准,自由的开发方式等从多完美特性于一身。JSP的设计目的是使构造基于Web的应用程序更加容易和快捷。由于JSP实现了Web动态内容与现实分离,脱离了硬件平台的束缚,并且编译后极大的提高了运行速度,因此,JSP正逐渐形成为互联网上的主流开发工具。
随着时间的推移,论坛站点中积存了丰富的信息资源,不但有各类技术资料和新闻文档,还包含着用户的判断和评论,论坛站点已成为Web信息库的重要组成部分,自网上论坛诞生20多年以来,随着Web技术的发簪,已经由原来简单的电子公告板系统发展为功能丰富的网上论坛和虚拟社区模式。各种论坛随着网络迅速发展,几乎充实着生活工作的每一个方面,无论是商界、政界、还是娱乐界,都有各种论坛。在这里,主要介绍了基于JSP技术的网上论坛。
1.4论文研究主要内容
本论文第一章是绪论,主要介绍了网上论坛的研究意义;第二章是相关技术介绍,着重介绍了JSP技术、SQL语言、JAVASCRIPT,MVC模式。第三章是系统需求分析,着重分析该系统要完成的功能以及系统体系结构和系统的设计思想;第四章系统概要设计,主要是对要实现的功能做一个简单的说明,以及系统总体结构图的设计;第五章是系统的详细设计,其中包括了数据库的详细设计和功能实现的详细设计,是本论文的重点。
系统使用JSP技术,作为表现层数据显示,用Struts2作为系统的控制层,用Spring作为业务逻辑层,来封装和管理系统中的Service来管理业务逻辑,同时完成对数据持久层JDBC Template 操作的简单封装,整合系统的框架等。 以tomcat作为系统的应用服务器,来部署系统的WEB应用,以Oracle数据库来管理系统的数据资源。

第2章 关键技术介绍
2.1 MVC开发模式
MVC是一种软件架构模式。它把软件系统分为三个基本部分:模式 (Model),视图(View)和控制器(Controller)。MVC的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序的某一部分重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组。
2.2系统分层结构中所用到的技术
下面分别阐述了在系统中MVC各层中所用到的关键技术。
2.2.1表现层
(1)HTML 控制页面的结构。
(2)CSS 控制页面的表现样式。
(3)JavaScript 控制页面的行为,常用作为数据验证和页面的生成。
(4)JSP技术,使用EL表达式和JSTL实现简单的逻辑和数据的显示。
2.2.2控制层
(1)Servlet是MVC模式系统的控制器:
(2)将用户的请求封装为一个数据对象。
(3)根据请求的不同,调用相应的逻辑处理单元,并将数据对象作为参数传入。
(4)逻辑处理单元完成后,返回一个结果数据对象。
(5)将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。
2.2.3业务逻辑层和数据持久层
(1)Java Bean
①封装所有的数据。
②封装所有的数据的Get、Set方法。
③封装数据从MYSQL数据库的增、删、改、查方法的调用方法。
(2)JDBC
JDBC的简单封装了连接数据库的方法以及从MYSQL数据库的增、删、改、查方法,提高了开发效率。
2.3系统中所用到的其它关键技术
在WEB应用容器方面用J2EE作为系统的容器,它主要是针对企业应用的开发。J2EE主要包括 JSP、Servlet、Java Bean、XML 、EJB等。目前国内的J2EE应用主要集中在企业网络应用中,是目前Java 阵营中实际应用最活跃的一个。用tomcat作为WEB应用的服务器,为WEB应用提供支持和服务,在数据库方面用JDBC来进行数据库连接。它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。
第3章 系统分析
3.1 系统功能分析
系统中主要包括用户和管理员,如图3.1所示。
图3.1 用户功能用例图
3.1.1用户功能分析
(1)用户能够注册登录。
(2)注册登录之后可以浏览帖子。
(3)用户可以查看自己的信息。
(4)用户可以修改自己的信息。
3.1.2管理员功能分析
(1)管理所有的用户信息,包括增删改查。
(2)管理所有的帖子,包括增删改查和移动。
3.2 模块需求描述
描述系统中各个模块的功能和需求。
3.2.1 注册登录功能
(1)注册功能说明
用户进入首页,如果有账号可以直接登录,如果没有账号需要进行账号注册。
(2)登录功能说明
验证登录者的身份,为系统提供安全防护。在登录时对用户的账号密码进行验证,用户可以查看账号是否被占用。验证输入2次的密码是否相同,这些功能是通过JavaScript来验证的。
(3)注册登录功能的需求
系统中注册登录功能的需求见表3.1。
表3.1 注册功能表
功能编号 功能名称 功能描述 优先级
1 注册 用户进入论坛首页后,如果没有账号需要进行注册,点击账号注册链接进行账号注册,注册时可以验证输入的账号是否存在,点击注册按钮后如果账号已存在则提醒账号已存在,如果账号不存在则注册成功 高
2 登录 用户输入用户名和对应的密码,系统就会验证输入的用户名和密码是否对应和正确,如果通过验证则转到相应的页面,否则提示密码输入错误。 高
3.2.2用户浏览或修改个人信息功能
(1)用户浏览或修改个人信息功能的说明
用户登录之后,可以在首页查看或者修改自己注册过用户名,密码,昵称等信息。
(2)用户浏览或修改个人信息功能的需求
用户查看修改用户信息的功能需求见表3.2。
表3.2 查看用户信息功能表
功能编号 功能名称 功能描述 优先级
1 浏览个人信息 登录成功后,点击用户信息可以浏览个人的信息。 低
2 修改个人信息 在显示个人信息的表单里可以点击修改按钮修改个人信息 低
3.2.3用户浏览帖子功能
(1)用户可以浏览帖子
用户可以在帖子列表区浏览帖子。
(2)用户浏览帖子功能的需求
系统中用户浏览帖子功能的需求见表3.3。
表3.3 用户可以查看或者发新的帖子
功能编号 功能名称 功能描述 优先级
1 用户可以浏览相应版块的帖子 用户登录后,可以选择版块,根据用户选择的版块区域来显示相对应的帖子列表,用户可以浏览帖子。 高
3.2.4用户发新帖子功能
(1)用户发新帖子功能说明
用户可以在帖子列表区域添加新的帖子。
(2)用户发新帖子功能的需求
用户添加新帖子的功能需求见表3.4。
表3.4 学生查看活动进行的状态功能表
功能编号 功能名称 功能描述 优先级
1 用户可以发新的帖子 在帖子列表中,用户可以点击发新帖链接来发新的帖子。发表成功后新的帖子会被显示在相应版块的列表中 中
3.2.5用户回复帖子的功能
(1)用户对发帖子的人回复功能的说明
用户登浏览帖子信息的时候,可以对发帖子人提出的问题进行回复。
(2)用户对发帖子的人回复功能的需求
用户对发帖子的人回复功能需求见表3.5。
表3.5 学生发布活动的功能表
功能编号 功能名称 功能描述 优先级
1 用户可以对发帖子的人回复 用户点击帖子题目查看帖子信息,然后可以在回复框里给发帖子的人留言。 低
3.2.6管理员管理用户功能
(1)管理员管理用户功能的说明
当管理员登陆的时候可以点击管理用户,之后看到一个显示所有用户信息的列表,管理员可以对用户信息进行更新和删除。
(2)管理员管理用户功能的需求
管理员管理试卷功能的需求见表3.6。
表3.6 管理员管理用户功能表
功能编号 功能名称 功能描述 优先级
1 添加新用户 管理员可以添加新用户 高
2 修改用户信息 管理员可以修改用户信息 高
3 删除用户 管理员可以删除用户,此操作会删除用户所有信息,请谨慎操作。 高
3.2.7 管理员管理帖子功能
(1)管理员管理帖子功能的说明
当管理员登陆的时候还可以点击管理帖子,之后看到一个显示所有帖子信息的列表,管理员可以对帖子信息进行更新和删除或者移到其他的版块中。
(2)管理员管理帖子功能的需求
管理员添加考试题目功能的需求见表3.7。
表3.7 管理员添加考试题目功能表
功能编号 功能名称 功能描述 优先级
1 添加新帖子 管理员可以添加新的帖子 高
2 修改帖子信息 管理员可以修改帖子信息 高
3 删除帖子 管理员可以删除帖子,此操作会删除帖子的所有信息,请谨慎操作。 高
4 移动帖子 通过修改帖子的版块ID属性将帖子移动到其他的版块中 中
3.3 系统开发环境
硬件环境:450*2MHZ/40G/1024MB/40G/
软件环境:Windows + Java JDK 1.5 + Tomcat6.0 + MyEclipse + Mysql
3.4 可行性分析
3.4.1 技术可行性
(1)本系统基于B/S模式进行,并采用MVC的开发模式进行系统架构。并合理搭配WEB框架,易于开发。
(2)应用成熟的WEB开发技术使系统易于实现。
3.4.2系统安全性分析
系统开发框架经过精心搭建使漏洞减少,采用接口编程,使系统各部分的相互依赖性降低,降低单元间的耦合程度。同时为系统维护带来方便。在编写各个模块时,合理的为用户分配访问权限,提高了系统的安全性。
第4章 系统设计
4.1 设计指导思想和原则
4.1.1 指导思想
(1)本系统的指导思想在于为用户提供一个信息共享的平台,和简单易用的界面系统。
(2)系统中的逻辑处理以MVC的三层设计模式分层调用,分层实现需要的功能,这样实现起来系统的耦合度降低,便于单元测试和维护。
(3)数据操作和逻辑操作分开进行,加快程序的开发。
4.1.2 软件设计原则
(1)问题界定,对于软件开发来说是至关重要的。因为任何一个软件都不是提供单纯的独立服务。必定是为了解决某些问题而开发软件,用来更好的解决问题。因此,问题的界定对于软件的成功开发和应用来说致关重要。
(2)基本功能实现:就是软件系统的核心体现。
(3)极端情况处理。
(4)客户体验至上:软件的主要服务对象是人。
(5)封装功能,松散变化。在面向对象的编程过程当中,我们经常会遇到开放-封闭”原则。其实,这个原则并不只是应用于面向对象的编程。
(6)可装卸,可配置。可配置,可装卸的软件,必将是未来软件更为理想的开发模式。这对于系统的维护,以及需求的变更适应性都是非常好的。
(7)从用户角度审视和评价软件的可用性,易用性,以及界面的友好性。
(8)软件的功能需求,与非功能需求。从功能和非功能需求两方面考虑和衡量软件。从而进一步提高软件质量,提高市场占有率,提高软件的价值。
4.2 系统功能总体设计
系统设计以模块化的方法进行,这样使大的功能块细分为小的功能块,实现起来容易而且便于协调和维护,具体信息如图4.1所示。
图4.1 系统功能结构图
4.3 系统功能详细设计
将系统中的各个模块分别实现。
4.3.1注册登录模块
模块描述:浏览者进入首页后,必须先注册才可以登陆,选择用户注册后,跳转到用户注册页面,在注册表单中用户名和密码、昵称不能为空,输入用户信息后可以检查用户名是否被占用,信息填写之后点击注册按钮,如果用户名没有被占用,将用户填写的信息通过逻辑层发送到数据库层,储存在数据库中,然后跳转到注册成功页面,点击登录链接跳转到欢迎页面,否则跳转到用户名被占用请重新注册的页面。
输入:选择用户注册后显示。
输出:欢迎页面。
模块具体流程如图4.2所示。

图4.2 注册流程图
4.3.2直接登录模块
模块描述:如果是用户登录切已经有账号了,选择用户登陆,转到普通用户登录页面,处理从客户端发送过来的用户名和密码;由逻辑层进行逻辑转发后,发送到数据库层,读取数据库数据来验证输入的用户名和密码是否正确,如果正确转到欢迎页面,如果错误转到登录失败页面,如果是管理员,则选择管理员登陆,转到管理员登陆页面,如果账号密码正确就转到系统管理页面,在页面用JavaScript验证限制用户输入空值。
输入:选择用户登录或者管理员登录后显示。
输出:欢迎页面或者管理员管理页面。
模块具体流程如图4.3所示。
图4.3 登录流程图
4.3.3浏览或修改个人信息模块
模块描述:浏览或修改用户个人的信息,包括用户名,密码,昵称等信息。
输入:登陆成功后点击用户信息显示。
输出:用户信息表单。
模块具体流程如图4.4所示。
图4.4 浏览或修改个人信息流程图
4.3.4浏览帖子模块
模块描述:用户登录以后,在首页可以选择版块,选择之后会显示相应版块的帖子列表。
输入:选择版块后显示。
输出:帖子列表。
模块具体流程如图4.5所示。
图4.5 浏览帖子流程图
4.3.5用户发帖模块
模块描述:用户浏览帖子的时候,可以点击发帖的链接发新的帖子,发表成功后新的帖子会被显示在帖子列表中。
输入:点击发帖显示。
输出:填写帖子标题和内容的表单。
模块具体流程如图4.6所示。
图4.6 用户发帖流程图
4.3.6用户回帖模块
模块描述:用户在显示帖子信息的页面中点击回复可以回帖。
输入:点击回复显示。
输出:填写回复信息的表单。
模块具体流程如图4.7所示。
图4.7 用户回帖流程图
4.3.7管理员管理论坛模块
模块描述:管理员登陆后可以点击管理帖子,然后出现版块链接,选择版块之后出现帖子列表,管理员可以进行修改、删除帖子以及将帖子转移到其他版块的相关操作。
输入: 选择版块后显示。
输出: 显示帖子列表。
模块具体流程如图4.8所示。
图4.8 管理帖子模块
4.3.8管路员管理用户模块
模块描述:管理员可以添加用户,输入用户的信息,返回添加成功或者失败。管理员可以更改用户信息,输入修改的信息,返回修改成功。管理员可以删除用户,删除用户将会删除关于该用户的所有信息。
输入:选择要维护的信息,对信息的维护。
输出:维护信息的结果。
模块具体流程如图4.9所示。
图4.9 管理用户模块
4.4 数据库设计
4.4.1数据库设计介绍
数据库设计是项目开发中系统设计的另一个基本环节,在这里之所以要特别强调数据库设计的重要性,是因为数据库设计就像高楼大厦的根基一样,如果设计不好,在后来的系统维护,变更和功能扩充时,甚至于在系统开发过程中,将会引起比较大的问题,大量的工作将会重新进行。数据库技术是信息资源管理最有效的手段,数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,有效存储数据,满足用户信息要求和处理要求。数据库结构设计的好坏将直接对应用系统的效率及实现效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。系统规划阶段主要是确定系统的名称、范围。确定系统开发的目标功能和性能,确定系统所需的资源,估计系统开发的成本,确定系统实施计划及进度,分析估算系统可能达到的效益,确定系统设计的原则和技术路线等。对分布式数据库系统,还应分析用户环境及网络条件,以选择和建立系统的网络结构。 需求分析阶段要在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。通过对组织、部门、企业等进行详细调查,在了解现行系统的概况、确定新系统功能的过程中,收集支持系统目标的基础数据及其处理方法。 概念设计阶段要产生反映企业各组织信息需求的数据库概念结构,即概念模型。概念模型必须具备丰富的语义表达能力、易于交流和理解、易于变动、易于向各种数据模型转换、易于从概念模型导出与DBMS有关的逻辑模型等特点。逻辑设计阶段除了要把E-R图的实体和联系类型转换成选定的DBMS支持的数据类型,还要设计子模式并对其进行评价,最后为了使模式适应信息的不同表示,需要优化模式。物理设计阶段的主要任务是对数据库中数据在物理设备上的存放结构和存取方法进行设计。数据库物理结构依赖于给定的计算机系统,而且与具体选用的DBMS密切相关。物理设计常常包括某些操作约束,如响应时间与存储要求等。系统实施阶段主要分为建立实际的数据库结构,装入试验数据对应用程序进行测试,装入实际数据建立实际数据库三个步骤。另外,在数据库的设计过程中还包括一些其他设计,如数据库的安全性、完整性、一致性和可恢复性等方面的设计,不过,这些设计总是以牺牲效率为代价的,设计人员的任务就是要在效率和尽可能多的功能之间进行合理的权衡。
4.4.2数据库表格设计
在系统的设计中因为要有用户所以有一个用户表,要有帖子所以有一个帖子表。
用户回复帖子要将回复信息存入数据库中,所有还有一个回帖信息表
用户表主要是记录用户的信息,详见表4.1。
表4.1 用户表
字段名 数据类型 键 说明
userid VARCHAR(10) 主键 用户ID
username VARCHAR(10) 用户账号
password VARCHAR(10) 用户密码
nickname VARCHAR(10) 昵称
sex VARCHAR(10) 性别
帖子表主要是记录帖子信息,详见表4.2。
表4.2 帖子表
字段名 数据类型 键 说明
id INT(10) 主键 帖子ID
partid VARCHAR(10) 帖子版块ID
title VARCHAR(50) 帖子标题
content VARCHAR(1000) 帖子内容
response VARCHAR(10) 回复次数
looknumber VARCHAR(10) 浏览次数
addtime VARCHAR(10) 发布时间
addperson VARCHAR(10) 发布者
partname VARCHAR(10) 帖子所属版块

回帖信息表主要是记录回帖的内容,详见表4.3。
表4.3 回帖信息表
字段名 数据类型 键 说明
id INT(10) 主键 帖子ID
reperson VARCHAR(10) 回帖人
recontent VARCHAR(1000) 回复内容
topicid VARCHAR(10) 回复内容所属帖子的ID
4.5 系统界面设计
一个友好的用户界面还应方便用户对系统的操作使用,并且应该符合用户以往的操作习惯或者大部分用户的操作习惯,只有这样才能使用户充分发挥主观能动性更快、更好的学习使用该系统。下面是人机界面设计的三个原则:
户原则。人机界面设计首先要确立用户类型。划分类型可以从不同的角度,视实际情况而定。确定类型后要针对其特点预测他们对不同界面的反应。这就要从多方面设计分析。
信息最小量原则。人机界面设计要尽量减少用户记忆负担,采用有助于记忆的设计方案。
帮助和提示原则。要对用户的*作命令作出反应,帮助用户处理问题。系
统要设计有恢复出错现场的能力,在系统内部处理工作要有提示,尽量把主
动权让给用户。
对于一个基于B/S架构的网站系统来说主页的设计很关键,整个系统我们注重的是:易导航性、易操作性、容错性和友好的交互界面。首先在页面的风格上应保持统一,这里采用CSS样式表将所有页面的字体、字号、颜色以及超级链接的样式做统一定义。考虑到网络速度对网页界面下载时间的影响,界面设计尽量不使用大量图片。
4.5.1首页界面设计
当浏览者首次进入论坛时,会进入首页,如图4.10所示。
图4.10 首页

4.5.2用户注册登录界面设计
浏览者进入论坛之后,如果没有账号则需要注册账号,如果已经注册过账号了可直接登录,如图4.11、4.12所示。
图4.11 用户注册
图4.12 用户登录
4.5.3欢迎界面设计
当浏览者登录成功后会进入欢迎界面,如图4.13所示。

图4.13 欢迎界面
4.5.4用户查看个人信息界面设计
浏览者在欢迎界面可以查看自己的用户信息,如图4.14所示。
图4.14 查看个人信息界面
4.5.5用户浏览帖子界面设计
浏览者在欢迎界面可以查看帖子列表,浏览帖子内容、回帖或发新帖子,如图4.15、4.16、4.17所示。
图4.15 查看帖子列表界面
图4.16 浏览帖子回帖界面
图4.17 发帖界面
4.5.6管理员界面设计
如果是管理员登录,则跳转到管理员登录页面,和朋友用户登录页面一样,登录成功后,则跳转到管理页面,如图4.18所示。
图4.18 管理界面
管理员可以对用户和帖子进行增删改查,还可以转移帖子所属版块,如图4.19、4.20所示。
图4.19 管理用户界面
图4.20 管理帖子界面

第5章 系统实现
5.1基于JSP、JAVABEAN、SERVLET的MVC架构
由于系统使用了MVC模式,所以由Servlet作为控制器,JDBC连接数据库,Servlet接收JSP或HTML提交的action,对应到相应的action中,根据action调用的Javabean中封装的方法来实现相应的功能。如果有增删改查的请求时,Javabean中的方法会调用JDBC封装的方法和数据库进行交互。
5.1.1编写控制器Servlet
配置控制器servlet,放入servlets包中,servlet部分代码如下:
package servlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import userInfo.ForumInfo;
import userInfo.UserInfo;
import java.util.ArrayList;
public class UserInfoController extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(GBK);
String actionUrl=request.getServletPath();
5.1.2编写模型层Javabean
Javabean有两个,放入userInfo包中,两个Javabean分别封装了关于用户的属性和方以及关于帖子的属性和方法,部分代码如下:
package userInfo;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import jdbc.JDBCBean;
public class ForumInfo {
private String id=;
private String partid=;
private String title=;
private String content=;
private String response=;
private String looknumber;
private String addperson=;
private String addtime=;
public String getId() {
return id;
}
5.1.3编写JDBC
部分代码如下:
package jdbc;
import java.sql.*;
public class JDBCBean {
private String driverStr=com.mysql.jdbc.Driver;
private String connStr=
jdbc:MySQL://localhost:3306/bbs?user=root&password=root&useUnicode=true&characterEncoding=gbk;
private Connection connection=null;
private Statement stmt=null;
private ResultSet rs=null;
//加载驱动程序
public JDBCBean(){
try{
Class.forName(driverStr);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
//建立与数据库的连接
private Connection getConnection(){
try{
connection=DriverManager.getConnection(connStr);
}catch(SQLException e){
e.printStackTrace();
}
return connection;
5.1.4配置成功
经过以上配置MVC模式的整体架构就完成了,可以编写处理的类和方法进行测试是否成功。
5.2系统逻辑功能的实现
当浏览者首次登陆的时候,要先进行注册,才可以查看帖子,在首页点击用户注册链接,用户注册,直接跳转到注册页面,在注册页面用户可以查看输入的用户名是否被占用,当点击检查用户名是否被占用链接的时候,会调用一个Javascript方法,方法内容如下:
function checkName(){
var username=form1.username.value;
if(username==)
{
alert(请输入用户名);
}
else{
window.open(checkName.action?username=+username,check,menubar=no,height=300,width=400,left=300,top=80);
}
}
该方法会弹出一个窗口同时把用户名传给Servlet,调用相应的action,
public boolean checkName(){
boolean exist=false;
String sql=select * from user where username=+username+;
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try{
if(rs.next())
exist=true;
}catch(SQLException e){
e.printStackTrace();
}
jdbc.close();
return exist;
}
action调用相应的Javabean的方法,
public boolean checkName(){
boolean exist=false;
String sql=select * from user where username=+username+;
JDBCBean jdbc=new JDBCBean();
ResultSet rs=jdbc.executeQuery(sql);
try{
if(rs.next())
exist=true;
}catch(SQLException e){
e.printStackTrace();
}
jdbc.close();
return exist;
}
该方法会链接数据库检查用户名是否已经存在,之后将结果返给actio你,action在根据结果控制弹出的窗口显示用户名可用或用户名已存在的页面。用户输入信息之后,如果用户名或昵称被占用这需要修改用户名或昵称,如果没被占用则将用户信息发送到servlet,servlet调用相应的action
if(actionUrl.equals(/register.action)){
UserInfo ui=new UserInfo();
String userid=;
ArrayList list=ui.getUserID();
for(UserInfo id:list){
userid=id.getUserid();
}
String username=request.getParameter(username);
String password=request.getParameter(password);
String nickname=request.getParameter(nickname);
String sex=request.getParameter(sex);
HttpSession session=request.getSession();
ui.setUsername(username);
if(ui.checkName()){
request.getRequestDispatcher(/userExist.html).forward(request,
response);
}
else{
ui.setPassword(password);
ui.setNickname(nickname);
ui.setSex(sex);
ui.setUserid(userid);
int result=ui.registerUser();
if(result==1){
session.setAttribute( username,username);
list=ui.getLandNickname();
request.setAttribute(list,list);
request.getRequestDispatcher(/regSuccess.jsp).forward(request,
response);}
else
request.getRequestDispatcher(/regFailure.html).forward(request,
response);
}
}
action在将信息发送到Javabean,Javabean调用相应的方法将用户信息存入数据库中,然后控制页面跳转到注册成功页面,用户在注册成功页面点击登录则跳转到欢迎页面。
已经登录的用户点击版块链接后,同时会将版块的id发送到servlet中,servlet接收版块id后储存到session中,然后调用JavaBean的方法,JavaBean的方法会提取版块id,然后在根据版块id从数据库中得到该版块的帖子列表,然后按照发布的顺序排列,显示给用户,供用户浏览。实现代码:
用户从首页面点击版块链接:
技术讨论区
JAVA区
.net区
综合区
该连接请求被提交到servlet控制器中的名为forumList的action中,action的具体代码如下:
else if(actionUrl.equals(/forumList.action)){
String id=request.getParameter(id);
UserInfo ui=new UserInfo();
ForumInfo fi=new ForumInfo();
fi.setPartid(id);
HttpSession session=request.getSession();
String username=null;
session.setAttribute(partid,id);
if(session.getAttribute(username)!=null) {
username=session.getAttribute(username).toString();}
ui.setUsername(username);
ArrayList list=ui.getLandNickname();
ArrayList Forumlist=fi.getForumList();
request.setAttribute(list,list);
request.setAttribute(Forumlist,Forumlist);
request.getRequestDispatcher(/TopicList.jsp).forward(request, response);
}
页面请求到达这里时,servlet首先获取版块ID,然后存入session中,之后调用Javabean的getLandNickname方法获取用户的昵称,再调用Javabean的getForumList方法,Javabean首先获取版块ID然后根据ID从数据库中取得帖子的信息,然后存入泛类ArrayList中返还给servlet, servlet控制页面跳转到显示帖子列表的URL地址并将ArrayList发送过去,在显示帖子列表的JSP页面会把用户昵称和ArrayList中的帖子内容显示出来。
当用户想要发帖子的时候,在帖子列表中点击发帖链接
 

发帖

调用action
else if(actionUrl.equals(/newTopic.action)){
UserInfo ui=new UserInfo();
HttpSession session=request.getSession();
String username=null;
if(session.getAttribute(username)!=null) {
username=session.getAttribute(username).toString();}
ui.setUsername(username);
ArrayList list=ui.getLandNickname();
request.setAttribute(list,list);
request.getRequestDispatcher(/newTopic.jsp).forward(request, response);
}
Servlet控制页面跳转到填写帖子信息的页面,在填写帖子信息页面用户填写帖子信息,填完之后点击发帖提交表单,调用action
else if(actionUrl.equals(/addTopic.action)){
UserInfo ui=new UserInfo();
ForumInfo fi=new ForumInfo();
String title=request.getParameter(title);
String content=request.getParameter(content);
String looknumber=0;
HttpSession session=request.getSession();
String partid=null;
String username=null;
String addperson=null;
if(session.getAttribute(partid)!=null) {
partid=session.getAttribute(partid).toString();}
if(session.getAttribute(username)!=null) {
username=session.getAttribute(username).toString();}
ui.setUsername(username);
ArrayList list=ui.getLandNickname();
for(UserInfo person:list){
addperson=person.getNickname();
}
fi.setLooknumber(looknumber);
fi.setPartid(partid);
fi.setTitle(title);
fi.setContent(content);
fi.setAddperson(addperson);
int result=fi.registerForum();
if(result==1){
ArrayList Forumlist=fi.getForumList();
request.setAttribute(Forumlist,Forumlist);
request.setAttribute(list,list);
request.getRequestDispatcher(/TopicList.jsp).forward(request,
response);}
}
该action首先新建一个变量looknumber用于显示浏览次数,获取partid用户控制新添加的帖子放在哪个版块里,然后获取用户填写的帖子信息将其存入Javabean,Javabean调用registerForum方法将帖子信息存入数据库中,然后调用getForumList方法获取含有帖子列表的ArrayList并控制页面跳转到帖子列表页面,这样帖子列表页面就会将新添加的帖子信息显示在列表中了
当用户需要查看帖子内容的时候,点击帖子的标题后将帖子的ID发送到servlet中同时调用action
else if(actionUrl.equals(/lookTopic.action)){
String id=request.getParameter(id);
UserInfo ui=new UserInfo();
ForumInfo fi=new ForumInfo();
HttpSession session=request.getSession();
String username=null;
if(session.getAttribute(username)!=null) {
username=session.getAttribute(username).toString();}
ui.setUsername(username);
fi.setId(id);
ArrayList list=ui.getLandNickname();
request.setAttribute(list,list);
int result=fi.updatelooknm();

action将帖子ID存储到session中,之后调用Javabean的方法lookTopic,该方法获取帖子ID并且根据帖子ID将帖子的标题和内容存入ArrayList返回给servlet,servlet控制页面跳转到查看帖子页面并将ArrayList发送过去,查看帖子页面会把ArrayList的内容显示在网页中。
当用户给发帖人回帖的时候,在回贴表单里填写要回复的信息,提交表单就会调用回帖的action,部分代码如下
else if(actionUrl.equals(/response.action)){
HttpSession session=request.getSession();
String topicid=null;
String reperson=request.getParameter(reperson);
String recontent=request.getParameter(recontent);
ResponseInfo ri=new ResponseInfo();
if(session.getAttribute(topicid)!=null) {
topicid=session.getAttribute(topicid).toString();}
ri.setTopicid(topicid);
ri.setReperson(reperson);
ri.setRecontent(recontent);
int result=ri.AddResponse();
在action中获取帖子的ID,回复的内容,回复人昵称,将它们存入回帖表中,然后在把所有的信息存入ArrayList中,在浏览帖子的页面获取ArrayList并通过for循环循环div标签和内容达到回帖的效果
当管理员登录时,可以对用户和帖子进行增删改查,对帖子还可以转移所属版块,部分代码如下
if(actionUrl.equals(/managerAddUser.action)){
UserInfo ui=new UserInfo();
String userid=;
ArrayList list=ui.getUserID();
for(UserInfo id:list){
userid=id.getUserid();
}
String username=request.getParameter(username);
String password=request.getParameter(password);
String nickname=request.getParameter(nickname);
String sex=request.getParameter(sex);
ui.setUsername(username);
if(actionUrl.equals(/managerAddUser.action)){
UserInfo ui=new UserInfo();
String userid=;
ArrayList list=ui.getUserID();
for(UserInfo id:list){
userid=id.getUserid();
}
String username=request.getParameter(username);
String password=request.getParameter(password);
String nickname=request.getParameter(nickname);
String sex=request.getParameter(sex);
ui.setUsername(username);
管理员对用户或者帖子进行增,改,查和转移帖子版块的流程功能和用户登录差不多,但在删除的时候,首先会调用JS方法,并把要删除的帖子的ID传过去,代码如下:
)>删除

发布了12 篇原创文章 · 获赞 3 · 访问量 3925

猜你喜欢

转载自blog.csdn.net/longlong888666/article/details/104234134