基于SSH框架的BBS管理系统 课程论文.docx
- 文档编号:26773261
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:29
- 大小:890.83KB
基于SSH框架的BBS管理系统 课程论文.docx
《基于SSH框架的BBS管理系统 课程论文.docx》由会员分享,可在线阅读,更多相关《基于SSH框架的BBS管理系统 课程论文.docx(29页珍藏版)》请在冰豆网上搜索。
基于SSH框架的BBS管理系统课程论文
BBS管理系统
***
摘要:
随着网络在现代社会中的广泛应用及当今社会快节奏的发展,人们越来越需要一个平台来进行分享并交流相应的资讯信息。
现在有各种的论坛网站等系统来实现人们的这一需要,获得有益信息并与他人进行交流,以方便人个扩展知识层面。
该课题主要的工作是对论坛网站的主要功能进行设计与实现,实现用户浏览帖子,发表及回复论坛帖子的功能以及系统管理员对后台的管理功能,如管理帖子和用户信息,对用户权限的设置。
主要作用是通过发表新帖并回复他人帖子来实现信息交流。
此文章中首先对整个系统功能进行详细的分析与设计;其次采用MySQL数据库技术实现对系统中涉及的数据信息进行管理,最后利用JSP技术进一步具体实现论坛网站各项功能,并用Tomcat作为服务器支持其运行。
运行调试确保网站的正常工作。
关键词:
struts;hibernate;spring;JSP技术;MySQL数据库
目录
1系统描述1
1.1研究课题目的和意义1
1.2国内外发展状况1
1.3研究内容及目标1
2需求分析2
2.1体系结构2
2.2系统功能需求2
2.3系统性能需求2
3总体设计3
3.1系统模块设计3
3.2数据库设计3
4系统实现4
5系统测试12
5.1测试目的12
5.2测试方法12
5.3测试环境12
5.4测试内容12
6总结18
参考文献19
1系统描述
1.1研究课题目的和意义
随着计算机技术的不断发展与提高,人们深刻的认识到了其强大的功能及在现代社会中的各个领域发挥着无可替代的重要的作用。
其中计算机网络技术更是得到了充分的应用,然而在网站设计中Web数据库技术已然成为最为广泛应用的网站架构的基础技术,网络提供了用户与用户之间通信交流的有效手段。
利用JSP技术实现Web服务器与数据库的连接,完成对网站信息的查询与处理。
由于网络具有传播信息容量大,形态多样,迅速方便且自由交互的特点,其已发展成为新的传播媒体及交互平台。
目前就有很多不同形式的网站提供人们共享资讯,而论文中目的是介绍运用JSP技术设计并实现论坛网站的功能。
构建一个交流平台通过互联网使用户和用户之间可以进行交流,分享各种信息;同时也可以通过网络提出所遇到的各种问题等待他人的解答,并彼此认识,交流扩大知识。
1.2国内外发展状况
目前,国内外有很多论坛系统,采用的技术也是多种多样,如基于SSH模式,但大多数校园论坛设计主要用大型论坛行。
至于小型论坛行,利用校园论坛设计组织论坛活动的并不多。
针对国内外对校园论坛设计的巨大需要和基本需要,一个好的校园论坛设计,必须功能齐全,操作简便,向用户展示友善的操作界面。
在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。
一个好的交流论坛设计,不管是计算机专业人员还是其他用户都能很快上手,操作简单,便于安装,容易普及。
设计实现论坛网站的主要意义在于:
首先,现今JSP在网站设计方面有着突出的优势,因此有必要掌握并熟练应用JSP动态网页设计技术;其次,通过数据库与Web服务器连接来对网站数据进行管理,掌握不同环境的关联与应用;最后,随着网络的发展及人们对知识信息的需求不断提升,网络已成为不可忽视的资讯来源,而论坛网站便能满足这个要求。
1.3研究内容及目标
本课题研究的基本内容是高校学生交流互动平台的实现与开发,它基于SSH框架,采用Java语言,MyEclipse开发工具实现注册、发帖、回帖等系列功能。
课题主要研究并实现的内容有如下几方面:
数据存储与数据库描述,由于论坛需要储存用户及其所发帖子的相关信息,而在论坛运行过程中这类相关数据量会逐渐增大,因此要依据数据库来实现对这些数据的存储和管理。
通常,用户要存有其注册时的ID,用户名,密码等个人信息,以方便网站的管理。
同时,论坛中的主题及帖子同样需要相应的信息数据,以方便其分类与管理。
用户在网站中进行的活动,这是课题的重点工作,涉及到如下内容:
用户登录:
会员注册成功后可以可以登录到网站;
查看帖子:
会员登录网站后可以浏览网站上的帖子以及发布的信息;
回复帖子:
会员可以对帖子进行跟帖操作;
帖子管理:
版主可以对自己负责的版块的帖子进行置顶、精华、删除等操作,版主也拥有普通会员所以的功能;
版块管理:
对版块进行修改、删除、增加等。
2需求分析
对于一个论坛系统来说,最大的需求就是让更多的用户来发表和回复主题。
对于任何用户,只要进入论坛系统,就能够浏览其他用户发表的主题。
但是用户要自己来发表主题或者回复别人发表的主题,首先需要注册,注册完成后,就能进行登录。
用户登录后,就能够发表自己感兴趣的主题,来供其他人分享。
也可以回复别人的主题,来和别人一起交流。
2.1体系结构
其体系结构的逻辑关系图,如图2-1所示
图2-1逻辑关系图
2.2系统功能需求
本论坛以目前国内外成熟论坛为引导,实现论坛的基本功能,根据调研分析,本论坛实现以下功能:
(1)用户注册:
新用户注册,填写用户信息,检验用户信息的有效性,并将用户信息持久化。
(2)用户登陆:
提供用户凭证,验证用户信息是否合法,根据用户角色授权。
(3)用户管理:
管理员有管理权限,管理版块,会员管理,版主设置,非法字符管理,公告管理。
(4)论坛版块管理:
管理员可以添加、删除、编辑论坛版块。
(5)帖子管理:
管理员可以设置版主,版主可以对本版块帖子进行删除、置顶、设精华等操作。
(6)帖子发表:
注册用户可以在感兴趣的版块中发表新帖。
(7)帖子回复:
用户可以对自己感兴趣的主题发表回复。
(8)游客部分:
浏览者可以注册成为会员,会员和浏览者都可以查看与论坛有关的信息,有关新闻公告和论坛首页。
用户使用论坛,有一定的流程:
用户注册登陆进入论坛,就某个话题(主题帖)展开讨论,通过发帖功能发布新的话题,通过回帖的功能回复已有的话题,通过搜索功能查找已有的话题;管理员通过管理功能创建、编辑、删除论坛的板块,管理注册用户,管理帖子,设置论坛基本参数。
2.3系统性能需求
界面的简洁,清新,操作起来方便简易、有很大的实用性是本系统针对。
因此,操作的简易实用性就体现的尤其重要。
3总体设计
3.1系统模块设计
以下为功能图:
图3-1管理系统结构图
3.2数据库设计
对于数据库的设计,我们组建立了很多表,这些表都是为了让平台有更好的管理和开展,这其中有些表就要记录注册用户的个人信息等。
我们建立了一个用来存储用户的个人信息表users,表中主要有用户的用户名、密码、昵称和积分等一些基本信息。
users数据表信息如下所示:
表3-1users表
列名
类型
说明
备注
id
int
id
主键
username
varchar
用户名
password
varchar
密码
nickname
varchar
昵称
score
int
积分
建立了一个管理员表admin,表中主要包括管理员的用户名和密码两项数据。
admin数据表如下所示:
表3-2admin表
列名
类型
说明
备注
id
int
id
主键
username
varchar
用户名
password
varchar
密码
建立了一个模块表module,表中主要包括想设置的模块数据。
module数据表如下所示:
表3-3module表
列名
类型
说明
备注
id
int
id
主键
name
varchar
名称
建立了一个类目表topic,表中主要包括模块下的话题类目数据和对应的模版id。
topic数据表如下所示:
表3-4topic表
列名
类型
说明
备注
id
int
id
主键
name
varchar
名称
module_id
int
板块id
外键
建立了一个帖子相关表post,表中主要包括帖子的名称、内容、查看数量、回复数量、发布时间、用户的id和类目id。
post数据表如下所示:
表3-5post表
列名
类型
说明
备注
id
int
id
主键
title
varchar
名称
content
varchar
内容
view_count
int
查看数量
reply_count
int
回复数量
systime
datetime
发布时间
user_id
int
用户id
外键
topic_id
int
类目id
外键
建立了一个回复表reply,表中主要包括评论内容、评论时间、帖子id和用户id。
reply数据表如下所示:
表3-6reply表
列名
类型
说明
备注
id
int
id
主键
content
varchar
评论内容
systime
datetime
评论时间
post_id
int
帖子id
外键
user_id
int
用户id
外键
4系统实现
该管理系统,采用的是SSH框架来进行开发的,所以我们后台代码主要包括action,dao,entity,service还有util五个包和WebContent文件夹下的css样式表、创建所需的界面文件(jsp)。
本项目包和ssh框架的目录截图如下:
图4-1项目后台代码包截图
action是表示层,负责调用业务逻辑的服务组件。
在本项目中主要包括AdminAction,BaseAction,IndexAction,ModuleAction,PostAction,TopicAction,UserAction。
因其代码大体一致,下面仅举一例说明,其他在此省略。
AdminAction.java主要代码如下:
publicclassAdminActionextendsBaseAction{
privateAdminadmin;
privateStringmsg;
@Autowired
privateAdminServiceadminService;
/*登录*/
@Action("login")
publicStringlogin(){
AdminloginAdmin=adminService.get(admin.getUsername(),admin.getPassword());
if(loginAdmin==null){
msg="用户名或密码错误";
return"login";
}
//将登录用户信息存入session
getSession().setAttribute("admin",loginAdmin);
return"readmin";//重定向到管理首页
}
/*后台首页*/
@Action("index")
publicStringindex(){
msg="恭喜你!
登录成功了";
return"index";
}
/*管理员编辑*/
@Action("adminEdit")
publicStringadminEdit(){
return"adminEdit";
}
/*管理员更新*/
@Action("adminUpdate")
publicStringadminUpdate(){
if(admin.getPassword()==null||admin.getPassword().trim().isEmpty()){
msg="原密码不能为空";
return"adminEdit";
}
if(!
adminService.check(admin.getId(),admin.getPassword())){
msg="原密码错误";
return"adminEdit";
}
if(adminService.update(admin)){
getSession().setAttribute("admin",adminService.get(admin.getId()));//刷新session
msg="修改成功";
return"adminEdit";
}
returnnull;
}
dao即使dataaccessobject,方便子类获取session对象,及其他公用属性及方法。
如果遇到异常HibernateException("NoSessionfoundforcurrentthread"),是因为调用请求没有在spring事务中,此类中通过getCurrentSession得到的session对象被绑定在spring线程SpringSessionContext中而不是ThreadLocalSessionContext。
因此必须要在spring事务中才能使用session对象,此session在事务开启时自动创建,事务结束后自动销毁。
如果想使部分方法不开启事务,除了使用openSession手动创建和销毁,当前还没发现好的解决方案。
本项目中的dao层主要与action相对应。
下面举例说明。
AdminDao.java:
packagecom.dao;
importorg.springframework.stereotype.Repository;
importcom.entity.Admin;
@Repository//注册dao层bean等同于@Component
publicclassAdminDaoextendsBaseDao{
/*通过用户名查询无记录返回null*/
publicAdminselectByUsername(Stringusername){
returngetSession().createQuery("fromAdminwhereusername=:
username",Admin.class)
.setParameter("username",username).uniqueResult();
}
}
entity是hibernate对于表抽象出来的类,它和它所对应的表的是完全对应的,即只含有Admin,Module,Post,Topic,Users,在DAO类中数据库操作方法中拼接的HQL语句中的就是Entity的名称。
Admin.java:
packagecom.entity;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
importjavax.persistence.Table;
importjavax.persistence.Transient;
@Entity//注解为hibernate实体
@Table(name="admin")//注解对应的表名
publicclassAdmin{
@Id//注解主键
@GeneratedValue//id生成策略默认auto相当于hibernate的native-自增字段
privateintid;
privateStringusername;
privateStringpassword;
@Transient
privateStringpasswordNew;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetPasswordNew(){
returnpasswordNew;
}
publicvoidsetPasswordNew(StringpasswordNew){
this.passwordNew=passwordNew;
}
}
service是业务逻辑层的,实际上是调用了DAO的种种方法,DAO类里面就是对于数据库的操作了。
AdminService.java主要代码如下:
@Service//注解为service层spring管理bean
@Transactional//注解此类所有方法加入spring事务,具体设置默认
publicclassAdminService{
@Autowired//spring注入类对象
privateAdminDaoadminDao;
/*通过id获取*/
publicAdminget(intid){
returnadminDao.select(Admin.class,id);
}
/*通过用户名和密码获取*/
publicAdminget(Stringusername,Stringpassword){
Adminadmin=adminDao.selectByUsername(username);
if(admin!
=null&&admin.getPassword().equals(SafeUtil.encode(password))){
returnadmin;
}
returnnull;
}
/*检测密码*/
publicbooleancheck(intid,Stringpassword){
Adminadmin=adminDao.select(Admin.class,id);
returnadmin!
=null&&admin.getPassword().equals(SafeUtil.encode(password));
}
/*更新密码*/
publicbooleanupdate(Adminadmin){
AdminoldAdmin=adminDao.select(Admin.class,admin.getId());
oldAdmin.setUsername(admin.getUsername());
oldAdmin.setPassword(SafeUtil.encode(admin.getPasswordNew()));
returnadminDao.update(oldAdmin);
}
}
util,即utility,工具辅助层,一组通用的代码集合,比如处理多语言功能,网站非法信息过滤等等功能的代码集。
Struts通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:
Taglib和页面导航。
本项目的struts.xml的配置:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.5//EN"
"http:
//struts.apache.org/dtds/struts-2.5.dtd">
--指定由spring负责action对象的创建-->
Spring是一个开源框架,是一个轻量级的Java 开发框架。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。
面向切面——Spring提供了面向切面编程的丰富支持。
Spring框架的核心是控制反转。
spring.xml配置文件的内容如下:
xmlversion="1.0"encoding="UTF-8"?
>
//www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xmlns: context="http: //www.springframework.org/schema/context" xsi: schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd http: //www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context.xsd"> --spring注解搜寻范围--> component-scanbase-package="com"/> --引入hibernate配置文件--> hibernate.xml"/> Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,也可以在Servlet/JSP的Web应用中使用。 Hibernate的核心接口一共有6个,分别为: Session、SessionFactory、Transaction、Query、Criteria和Configuration。 这6个核心接口在任何开发中都会用到。 通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。 hibernate.xml的配置如下: xmlversion="
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于SSH框架的BBS管理系统 课程论文 基于 SSH 框架 BBS 管理 系统 课程 论文