STRUTS2bbs论坛.docx
《STRUTS2bbs论坛.docx》由会员分享,可在线阅读,更多相关《STRUTS2bbs论坛.docx(39页珍藏版)》请在冰点文库上搜索。
STRUTS2bbs论坛
Struts2电影论坛文档
1系统简介1
1.1bbs论坛2
1.2Struts2主要功能2
2系统设计及功能3
2.1数据库模型设计3
2.2类的设计4
2.2.1用户类的设计4
2.2.2类的说明5
3功能实现7
3.1注册功能7
3.2登录功能9
33发帖功能10
3.4评帖功能11
3.5删帖功能12
3.6个人信息功能14
37更改信息功能16
3.8退出功能17
3.9查询功能18
4.项目页面主要截图20
5..程序主要部分代码24
.
一.系统简介
1.BBS论坛
(1)用户访问论坛时,用户必须要登录,未注册的用户必须先注册然后再进入登陆页面,网站提供了客户浏览帖子,用户也可以更改个人信息,并能发表和回复帖子。
(2)网站同时实现了后台管理功能,当用户登陆帐号时,可以对帖子中的信息进行添加、更新、删除、查询等功能。
2.struts2主要功能
struts2这所以称之为框架.就是让所有人都按STRUTS2的标准来写代码,这样就方便多人同开发同一个项目.并且大家都能很容易看懂别人的代码实现页面跳转时对数据的验证,操作数据库,防止表单重复提交,提供jsp页面的标签的使用。
3.项目需求
论坛又名网络论坛BBS,全称为BulletinBoardSystem(电子公告板)或者BulletinBoardService(公告板服务)。
是Internet上的一种电子信息服务系统。
它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。
它是一种交互性强,内容丰富而即使的Internet电子信息服务系统。
用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。
那么什么是BBS呢?
BBS的英文全称是BulletinBoardSystem,翻译为中文就是“电子布告栏系统”。
BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在苹果机上运行。
早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过来传播或获得消息而已。
一直到开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。
近些年来,由于爱好者们的努力,BBS的功能得到了很大的扩充。
目前,通过BBS系统可随时取得各种最新的信息;也可以通过BBS系统来和别人讨论计算机……等等各种有趣的话题;还可以利用BBS系统来发布一些“征友”、“廉价转让”、“招聘人才”及“求职应聘”等启事;更可以召集亲朋好友到聊天室内高谈阔论……这个精彩的天地就在你我的身旁,只要您在一台可以访问校园网的计算机旁,就可以进入这个交流平台,来享用它的种种服务。
二.系统设计及功能
系统运用的开发工具是MyEclipse8.5,采用的操作系统是Windows7,Web服务器采用Tomcat6.0,开发工具包是JDKVersion1.6,数据库为mysql,浏览器为IE。
另外,本系统采用了Struts2+Jsp的架构模式。
MYSQL数据库用户名root密码6666
功能
效果
登录、注册
用户的登录、注册、修改信息等功能
信息显示
用户自身,帖子信息、好友的信息显示
发帖子
用户实现发帖功能
删除帖子
用户实现删除帖功能
进行评论
用户能对其他人的帖子发表评论
美工
网站特效,图片添加
application
现不能重复登录和统计
首页显示
普通游客浏览最新帖子(不可评论)
数据库模型设计
图5-1数据库模型图
描述:
编号
库表名称
描述
1
article
论坛交流信息表
2
re_article
发表信息表
3
userinfo
用户信息表
(1)message用来保存用户的用户名、密码等。
该表中的用户登录之后才可以发表帖子等操作。
(2)article论坛交流信息。
(3)re_article发表帖子的详细信息,可以让用户进行表的查看。
(4)userinfo保存会员的交流信息,以便会员查询,并进行操作。
类的设计
1.用户类的设计
6-1普通用户类类图
描述:
编号
类名
描述
1
LoginAction
用户登陆类
2
addRe_ArtocleAction.java
用户交流类
3
UseMangerrAction
用户操作类
6-2验证类类图
2.类的说明
publicclass_loginActionextendsActionSupport{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@SuppressWarnings("unchecked")
@Override
publicStringexecute()throwsException{
UserManageruser=newUserManager();
Stringname=user.login(username,password);
if(null!
=name)
{
SimpleDateFormattempDate=newSimpleDateFormat("yyyy-MM-dd"+""+"HH:
mm:
ss");
Stringdatetime=tempDate.format(newDate());
ActionContext.getContext().getSession().put("logintime",datetime);
ActionContext.getContext().getSession().put("user_id",username);
ActionContext.getContext().getSession().put("name",name);
ActionContext.getContext().getSession().put("temp","temp");
returnSUCCESS;
}
else
addActionError("用户名或密码错误");
returnLOGIN;
}
@Override
publicvoidvalidate(){
if(this.username.length()<5||this.username.length()>15)
{
addActionError("用户ID长度应在6到15位之间");
}
if(this.password.length()<5||this.password.length()>15)
{
addActionError("密码应在6到15位之间");
}
}
}
三.功能实现
1.注册功能
功能说明:
用户点击首页中的注册链接后,页面中显示注册层供用户填写注册信息,当用户输入新注册的用户名时,调用后台方法判断是否为非汉字,长度是否在5-15之间;输入密码时,判断长度是否在5-15之间;输入昵称长度是否在1-15之间;输入班级时在1-9之间,选择4种头像。
7-1-1注册功能活动图
7-1-2注册功能顺序图
层次
类型
备注
M
com.dao.UserDao
进行用户的添加的后台操作
C
com.test.actionlogin
登陆用户的action
C
com.test.bean.
添加用户的bean
V
login.jsp
登陆界面
V
register.jsp
注册界面
2.登陆功能
功能说明:
用户点击完登陆链接后,在页面中显示登陆层用户输入完用户名和密码后点击登陆按钮完成登陆操作。
7-2-1登录功能活动图
7-2-2登录功能流程图
3.发帖功能
功能说明:
根据是否登陆以及回复设置判断回复信息的是否可用,根据会员请求的页数从数据库中查询出数据,生成数据集合。
7-3-1功能流程图
4.评论贴子
功能描述
用户可以对想要评论的帖子进行评论,并且可以让其他用户浏览。
功能实现
点击要评论的帖子,调用后台的程序接收前台信息并判断帖子是否符合要求评
存储帖子的信息
7-4-1
5.删除帖子
功能描述
用户因某原因想要删除帖子,用户可以进行删除操作,删除后的帖子,帖子评论将会跟随帖子的删除一起删除。
新显示的帖子信息将不再包括删除过的这条帖子。
功能实现
对自己已经发表过的帖子用户可以进行删除操作,删除后的帖子将从数据库删除。
后台调用方法将帖子删除。
7-5-1添加评论活动图
●添加评论流程图
三..具体程序实现如下:
层次
类型
备注
M
Deletetopic方法
从数据库将帖子删除,删除的同时删除该帖子的所有评论。
C
Topicaction.java
点击删除后跳转的action,完成后台对Topicmaindao中deletetopic方法的调用,完成帖子的删除,之后跳转到显示页面
V
allqu.jsp
显示用户的所有帖子
6.个人信息功能
功能说明:
根据是否已经登陆判断个人信息的按钮是否可用,根据用户请求的页数从数据库中查询出数据,生成数据集合,根据按钮可用信息及数据集合生成页面信息并回。
7-6-1功能活动图
7-6-2功能顺序(流程)图
7.更改信息
功能说明:
根据是否已经登陆判断更改信息的按钮是否可用,点击查看并修改个人信息。
7-7-1功能活动图
7-7-2功能顺序图
8.退出功能
功能说明:
根据是否已经登陆判断退出的按钮是否可用,点击退出即可,并返回首页。
13-8-1功能活动图
13-2-8功能顺序图
9.查询功能
功能说明:
根据是否已经登陆判断注销的按钮是否可用,点击注销按钮,页面显示有查询余额,点击查询即可出现用户信息,点击并返回银行首页。
15-10-1功能活动图
15-10-2功能顺序图
四、项目主要页面截图
1.首页
2.登陆
3.注册
4.写帖
5.浏览帖子
7.回复帖
8.返回首页
五.程序主要部分代码
1.LoginAction.java
packagecom.test.action;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
importcom.test.db.UserManager;
publicclass_loginActionextendsActionSupport{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
@SuppressWarnings("unchecked")
@Override
publicStringexecute()throwsException{
UserManageruser=newUserManager();
Stringname=user.login(username,password);
if(null!
=name)
{
SimpleDateFormattempDate=newSimpleDateFormat("yyyy-MM-dd"+""+"HH:
mm:
ss");
Stringdatetime=tempDate.format(newDate());
ActionContext.getContext().getSession().put("logintime",datetime);
ActionContext.getContext().getSession().put("user_id",username);
ActionContext.getContext().getSession().put("name",name);
ActionContext.getContext().getSession().put("temp","temp");
returnSUCCESS;
}
else
addActionError("用户名或密码错误");
returnLOGIN;
}
@Override
publicvoidvalidate(){
if(this.username.length()<5||this.username.length()>15)
{
addActionError("用户ID长度应在6到15位之间");
}
if(this.password.length()<5||this.password.length()>15)
{
addActionError("密码应在6到15位之间");
}
}
2.addArticleAction.java
packagecom.test.action;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
importcom.test.db.getArticle;
publicclassaddArticleActionextendsActionSupport{
privateStringuser_id;
privateStringname;
privateStringtopic;
privateStringcontent;
publicStringgetUser_id(){
returnuser_id;
}
publicvoidsetUser_id(Stringuser_id){
this.user_id=user_id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetTopic(){
returntopic;
}
publicvoidsetTopic(Stringtopic){
this.topic=topic;
}
publicStringgetContent(){
returncontent;
}
publicvoidsetContent(Stringcontent){
this.content=content;
}
@Override
publicStringexecute()throwsException{
ActionContextac=ActionContext.getContext();
this.user_id=(String)ac.getSession().get("user_id");
this.name=(String)ac.getSession().get("name");
getArticlegetarticle=newgetArticle();
booleanflag=getarticle.addArticle(this.user_id,this.name,this.topic,this.content);
if(flag)
{
returnSUCCESS;
}
else
{
addActionError("发送帖子失败");
returnERROR;
}
}
@Override
publicvoidvalidate(){
if(this.topic.length()<1||this.topic.length()>30)
{
addActionError("请认真填写主题");
}
if(this.content.length()<5)
{
addActionError("请认真填写帖子");
}
}
}
3.addUserAction.java
publicclassaddUserActionextendsActionSupport{
privateStringuser_id;
privateStringpassword;
privateStringname;
privateString_class;
privateStringpic;
publicStringgetUser_id(){
returnuser_id;
}
publicvoidsetUser_id(Stringuser_id){
this.user_id=user_id;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringget_class(){
return_class;
}
publicvoidset_class(String_class){
this._class=_class;
}
publicStringgetPic(){
returnpic;
}
publicvoidsetPic(Stringpic){
this.pic=pic;
}
@Override
publicStringexecute()throwsException{
UserManageruser=newUserManager();
booleanflag1=user.sercheUser_id(this.user_id);//先判断该账号是否存在
booleanflag2=false;
if(flag1)
{
flag2=user.addUser(this.user_id,this.password,this.name,this._class,this.pic);
if(flag2)
{
returnSUCCESS;
}
else
{
addActionError("注册失败");
returnERROR;
}
}
else
{
addActionError("该账号已经存在,请重新输入");
returnERROR;
}
}
@Override
publicvoidvalidate(){
if(this.user_id.length()<5||this.user_id.length()>15)
{
addActionError("用户ID不合法");
}
if(this.password.length()<5||this.user_id.length()>15)
{
addActionError("密码不合法");
}
if(this.name.length()<1||this.user_id.length()>15)
{
addActionError("用户呢称不合法");
}
}
}4.UserManager.java
publicclassUserManager{
privateConnectionconn;
privatePreparedStatementprepare;
privateResultSetrs;
publicStringlogin(Stringusername,Stringpassword)throwsSQLException,NamingException
{
Stringsql="selectnamefromuserinfowhereuser_id=?
andpassword=?
";