基于Struts的在线论坛_第1页
基于Struts的在线论坛_第2页
基于Struts的在线论坛_第3页
基于Struts的在线论坛_第4页
基于Struts的在线论坛_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第第页共40页1引言1.1课题目的随着目前科技的不断发展和网络的逐步普及,Internet已成为人们沟通的重要桥梁。尤其是在线论坛的出现更是呈现出一种蓬勃发展的趋态。本在线论坛系统就是为了适应这样一种发展趋势、方便人们的沟通而设计的。它为人们提供了一个可以自由交流沟通的平台,在该系统中可先通过注册成为会员,即可发表帖子来说出自己的观点,等待别的用户的加入即回帖来达到沟通目的。而且,由于论坛系统的参与人众多,因此各方面的话题都不乏热心者。在这里,打破了交流空间和时间限制,所有人都不用害怕暴露自己真实的社会身份,每个人都处于对等位置,可以就任何问题进行讨论。系统力求做到提供友好的人机交互界面,操作简便,安全可靠。本课题从理论和实践两个角度出发,通过设计和实现一个基于Struts的在线论坛,对目前流行的在线论坛以及所涉及的Struts框架等进行了较为深入的探讨。系统力求做到提供友好的人机交互界面,操作简便,安全可靠。本课题将四年所学的专业知识融入到实际的应用中,在实际运用中学习和掌握Java程序设计语言的基础内容、基本技能和方法,同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高[1]。现代科学技术的发展,改变了人类的生活[2],作为新世纪的大学生,应该站在时代发展的前沿,掌握现代科学技术知识,以适应社会的发展,能够独立完成面临的任务,做一名有创新意识的新型人才[3]。1.2在线论坛的发展现状论坛又名网络论坛BBS,全称为BulletinBoardSystem(电子公告板)或者BulletinBoardService(公告板服务),是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而及时的Internet电子信息服务系统。用户在BBS站点上可以获得各种信息服务,发布信息,进行讨论,聊天等等。另外论坛不同于一般的一些大型门户的新闻网站,论坛是把每一篇文章逐一排列起来供网友观看和回复。参照美国学者RD·维莫尔(R·D·Wimmer)和J·R·多米尼克(J·R·Dominick)针对传播媒介的研究提出的四个阶段模式,运用主题元分析的方法对目前我国国内BBS研究的现状进行了分析后发现,目前国内BBS研究现状可以划分为以下四个阶段[4]:第一阶段(28.7%),有关BBS自身的初步研究,包括历史和哲学问题、技术问题和应用,功用和服务以及政策法律等问题。第二阶段(41.9%),BBS的使用和用户,包括用户的认知、感受和调查,使用主体以及如何使用,BBS提供了什么,它的教育和政治等其他用途。第三阶段(16.9%),BBS的影响,包括它对人际关系和人们生活的改变、因之产生的一些新的社会和文化问题及其对传统媒介的冲击。第四阶段(12.5%),BBS的改进和研究,包括如何发展利用BBS及对BBS产生的相关问题的专业深入研究和系统化、综合性分析。任何一个媒介的使用和应用都是首先从对它的初步认知开始的,特别是互联网这一出现不久的新媒介,其发展速度和影响都体现出以往传统媒介无以匹敌的优势[5],BBS是这一新媒介的重要组成部分。大约是从1991年开始,国内开始了第一个BBS站[6]。经过长时间的发展,直到1995年,随着计算机及其外设的大幅降价,BBS才逐渐被人们所认识。2系统概述2.1相关技术简介在开发在线论坛系统中,考虑到系统的开发时间,系统的可用性,采用了Struts技术,为了减轻负载采用jsp动态网页技术。Struts是目前Web开发中比较成熟的一种框架,本文阐述了基于MVC模型的Web应用软件开发框架struts的体系结构及主要组成组件,并结合一个实例讨论如何设计基于struts框架的应用,同时也分析了使用struts框架开发web应用的优势。比尔盖茨曾说:"Java是最卓越的程序设计语言"[7]。2.1.1Struts技术简介Struts是apache组织jakarta项目的一个子项目,用以改善web系统的结构。它是一个基于Sun

J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发[8]。Struts和MVC模式紧密相关[9]:

(1)模型(Model),本质上来说在Struts中Model是一个Action类,开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的;

(2)视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面;(3)控制器(Controller),本质上是一个Servlet,将客户端请求转发到Action类;一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的(这样就实现了应用系统的多语言支持)。2.1.2JSP技术简介JSP(JavaServerPages)是由SunMicrosystems公司倡导,许多公司参与一起建立的一种动态页面技术标准,其在动态网页的建设中由其强大而特别的功能,它主要要用于创建支持跨平台Web服务器的动态网页[10]。JSP可与微软的ActiveServerPages(ASP)相媲美,但是JSP使用的是类似与HTML的标记和Java代码片断而不是用VBScript。当人们使用不提供ASP本地支持的Web服务器(例如Apache或者Netscape服务器)时,你就可以考虑使用JSP了。JavaServerPages技术可以让Web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统。作为Java技术的一部分,JSP能够快速开发基于Web,独立参与平台的应用程序。JSP把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容的前提下改变整个网页布局[11]。在JSP网页中,要把用户界面和应用程序分开可以考虑在网页设计人员和开发人员之间执行一个非常方便的授权任务。它也允许开发人员去建立灵活的代码,从而非常容易地进行更新和重复利用。由于JSP网页能够根据需要自动进行编译,Web设计人员无需重新编译应用程序逻辑就可以改变表述代码。这也就是JSP与JavaServed相比成为一种可以更灵活生成动态Web内容的方法[12]。事实证明,JavaServed是一种开发Web应用的理想架构。JSP以Served技术为基础,又在许多方面做了改进。利用跨平台运行的JavaBeans组建,JSP为分离处理逻辑与显示样式提供了卓越的解决方案。JSP必将成为其他动态网页技术的有力竞争者。在开发论坛系统中,运用JSP动态网页技术,大大减少了网络服务器的负担,大大的提高了论坛系统的性能,也有利于日后对系统的维护。图2.1JSP文件执行图2.1.3MYSQL数据库简介本论坛系统采用了MySQL数据库,其中MySQL数据库是一个小型关系型数据库管理系统,其被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.1.4MyEclipse简介MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。同时,MyEclipse拥有多种快捷键,令程序的开发更易进行。在结构上,MyEclipse的特征可以被分为7类:(1)JavaEE模型(2)Web开发工具(3)EJB开发工具(4)应用程序服务器的连接器(5)JavaEE项目部署服务(6)数据库服务(7)MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。2.2系统开发模式介绍目前,在大多数B/S(Browser/Server)结构的Web应用中,浏览器直接通过HTML或者JSP的形式与用户交互,响应用户的请求。虽然很直观,但是大多数管理信息系统操作的数据量都是惊人的,随着代码的增多会使JSP页面臃肿不堪,Web服务器的负荷过重。因此,在中间层上采用基于模型视图控制器(MVC,Model-View-Controller)的设计模式。MVC之间的关系如图2.2所示,Model层用来实现业务逻辑,View层用来显示用户界面,Controller层主要负责View层和Model层之间的控制关系。这种设计模式很好地实现了数据层与表示层的分离,使开发工作更加容易和迅速进行[13]。图2.2MVC之间的关系图本次论坛系统为基于Struts的在线论坛系统,Struts2是一个基于MVC的web框架。作为一个可复用的框架,是由一些抽象类,类,接口或者实例间的协作关系组成。 Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品[14]。2.3系统服务器配置 2.3.1JDK的安装和配置JDK是JavaDevelopmentKit的缩写,是SunMicrosystems针对Java开发员的产品。没有JDK的话,则无法安装或者运行java程序。此次在线论坛的开发使用版本为jdk1.6.0_26,下载安装完成后,需要配置jdk环境变量。如下图2.3所示为此次在线论坛系统的JDK环境配置界面。2.3.2Tomcat的安装和配置关于tomcat的安装可以到上去下载,这是一个完全免费的优秀软件,安装之前要保证本机已经安装JDK环境[15]。在Tomcat的安装目录下bin子目录中,有一些批处理文件(以.bat作为后缀名的文件),其中的startup.bat就是启动Tomcat的脚本文件,用鼠标双击这个文件,将会看到信息。在浏览器地址栏中输入http://localhost:8888/,如果出现如图界面则说明安装成功即可以进行配置配置,tomcat首先要修改端口号,在conf目录下有个叫server.xml将端口号修改为了8888,然后建立虚拟目录配置调试。图2.3tomcat配置成功界面3系统需求分析3.1系统功能需求对于一个系统的开发,首先需要对该系统的功能框架等进行一个基本的需求分析。首先需要确定系统所要采用的框架以及系统具备哪些功能,这些都需要多多参考一些比较成功的BBS论坛,学习采纳优秀的经验。经过对知名论坛的研究参考,我认为既然论坛系统用于在互联网上为人们提供一个信息发布或信息交流的场所,那么它应具备以下功能:首先在线论坛系统分为前台交流和后台管理两大部分功能。前台主要功能包括:用户注册登录功能,发表主题功能,回复帖子功能,查看帖子功能。其中为了让有不同目的趋向的用户可以清楚的找到自己感兴趣的主题,以及相同兴趣的用户可以更方便的交流,我将系统设计成了由多个专区组成的论坛,这样极大的方便了用户,也是界面友好性的一个体现。后台管理的部分包括:管理员的登陆,管理员的注销,专区的管理,用户的管理,主题的管理以及回复信息的管理。专区的管理包括对专区版主的设定、撤销,对专区板块的增加、修改、删除。用户的管理包括对用户的删除、用户级别的设定和修改。主题及回复信息的管理也包括了常见的修改、删除。对于贴子查看、发表贴子以及回复贴子这类频繁发生的系统操作,要采取适当的技术优化这类数据操作,以提高数据存取效率。通过这些功能极大的方便了用户的发言、查找,同时也将管理员的工作简单化、有效化,使管理员能过更方便的管理和监督论坛,保证了论坛的安全运行。3.2系统性能需求考虑到论坛系统使用的特殊性需要满足以下要求:(1)时间特性论坛的数据库较小,所以程序在响应时间,数据更新处理时间上性能是比较突出的。由于数据量相对较少,故在数据传输时间和系统运行时间上表现的较让人满意。(2)通用性由于用户的操作系统不尽相同,这就要求考虑各平台之间的异性,而论坛所采用的基于B/S的结构就很好的解决了这个问题,用户端只需要有浏览器就可以使用论坛系统。(3)输入输出要求本系统应能够对不完整的数据进行校验,保证数据的完整性和一致性,输出能满足用户的需求。3.3系统的开发环境3.3.1硬件环境CPU:Intelcorei31.8GHz以上内存:1GB及以上硬盘空间:120GB及以上3.3.2软件环境操作系统:WindowsXP或以上版本浏览器:InternetExplorer9.0或其他浏览器数据库:Mysql6.0或以上版本服务器:Tomcat6.0或以上版本4系统总体设计4.1功能结构设计根据需求分析,可将在线论坛系统分为两大模块:前台模块和后台模块。前台功能模块主要包括3部分:登录模块:用户在前台可以注册、登录;浏览模块:用户可以浏览主题帖列表、查看帖子;发帖回帖模块:用户可以发帖、回帖、编辑自己发布的帖子。后台模块都是与管理员相关,也包括3部分:论坛设置模块:管理员可以设置论坛参数;管理版块模块:创建、修改和删除版块;管理用户模块:添加、删除和设置权限。论坛的功能结构模块如图4.1所示:BBS系统BBS系统前台功能后台管理用户登入用户注册用户发帖浏览帖子用户回帖栏目管理专区管理回帖管理用户管理图4.1论坛的功能结构图4.2功能模块介绍在本次的在线论坛系统中有两种用户:普通用户和系统管理员。在论坛中的版主权限,暂时划分给管理员。4.2.1前台功能模块(1)注册登录因为论坛的特殊性以及网络的法律薄弱性,在本系统中采用了无匿名登录模式,用户想要对页面进行操作则必须先登录,未登录的用户对页面进行操作,系统将不对其给与运行同时提示用户必须先注册。(2)浏览帖子浏览帖子版块列表选择某版块,浏览其下的主题贴列表,查看帖子内容。这些行为是用户读取论坛的版块及其帖子的相关信息,设计成浏览版块。(3)发帖回帖本模块中用户可以发表新帖子,也可以回复已有的帖子,同时可以编制自己写的帖子内容。这些行为是用户参与论坛讨论,发表自己的见解,已达到沟通交流的目的,设计为发贴回帖模块。会员会员选择专区发布主题选择浏览主题发布回复信息提交图4.2普通会员的操作流程4.2.2后台管理模块对于系统管理员,需要负责整个论坛的正常运转,因此它需要设计管理功能模块,可以归纳为如下行为:具备注册用户的所有功能,因为管理员也是论坛用户,可以参与论坛中的讨论。管理员的操作流程如下图4.3所示。(1)管理帖子管理员对论坛的帖子有监督的权利,好的帖子要奖励,捣乱的帖子要删除,转移发错版块的帖子,这些行为都是针对帖子的操作,设计成管理帖子模块。(2)管理版块论坛中的版块,需要管理员进行创建,并由管理员管理版块信息,这些针对版块的操作,设计成管理版块模块。(3)管理用户用户注册成功后,需要管理员赋予权限,才能使用论坛的相关功能。同时,管理员可以自己添加,删除用户,这些针对用户信息的操作,设计成管理用户模块。管理员管理员版块管理帖子管理用户管理添加版块选择版块删除版块显示所有主题显示所有用户更换版主删除帖子删除用户修改用户权限搜索用户图4.3管理员操作流程图4.2.3前台模块与后台模块的关联对于论坛系统来说,联系各个模块的主线是使用者的权限,用户能使用论坛的哪些功能是由用户权限决定的,论坛的每个功能都与相关的用户权限对应。例如,注册用户具有浏览帖子,发贴,回帖的权限,那么他就能使用论坛中的浏览,发贴,回帖功能。同一类用户使用的功能模块,是以使用者为中心连接起来的。另外,操作同一类事物的功能模块,也有相关关系的。因此,浏览模块与发帖回帖模块,管理帖子模块关联,是由论坛系统流程决定的。管理版块模块与浏览模块关联,是由帖子与版块的父子关系决定的,帖子依附与版块,先有版块,后有帖子,帖子必须发表在每个版块中。用户管理模块与注册登录模块关联,是由同一类对象——用户决定的,注册后获得论坛的身份,成为用户,所以的用户需要接收管理员的管理,用户登录证明自己在论坛中的身份。根据在线论坛系统的入口不同,可将其分为前台系统和后台系统。前台功能包括注册登录模块,浏览模块,发帖回帖模块,管理帖子模块;后台功能包括管理用户模块,管理版块模块。同时,不论前台还是后台模块均具备注销登录功能。5数据库的设计5.1数据库的安装数据库论坛系统使用了MySQL,安装界面如图5.1所示。图5.1MySQL的安装界面根据程序提示一次安装完成,完成后进行MySQL的配置。配置界面如图5.2所示:图5.2MySQL配置界面安装配置完成后,可以下载安装一个MySQL的图形化操控程序,方便数据库的建立、管理及连接工作等。如图5.3所示:图5.3MySQL的图形化界面5.2数据库概念结构设计根据系统的总体设计,在线论坛网站的实体主要有:管理员实体,用户信息实体,帖子实体。(1)管理员信息实体E-R图,如图5.4所示:管理员管理员用户密码权限图5.4管理员信息实体E-R图(2)用户信息实体E-R图,如图5.5所示:用户用户密码头像用户名图5.5用户信息实体E-R图(3)论坛帖子实体E-R图,如图5.6所示:帖子帖子用户内容版块主题图5.6论坛帖子实体E-R图5.3数据库逻辑结构设计通过对系统的需求和功能的分析我将系统的数据结构主要分为四个部分,包括板块信息,用户信息,主题信息以及回复信息。tb_topic用于存放会员发表的帖子信息。tb_user用于存放论坛用户信息。tb_forum用于存放论坛类别板块信息。tb_response用于存放会员回复的帖子信息。用户信息表tb_user包括:用户id,用户名,真实姓名,用户密码,用户性别,用户邮箱,用户QQ号,用户权限,用户头像,E_mail,联系地址等信息。建立数据库表结构如下表5.7所示:表5.7tb_user数据表字段描述类型空值长度id用户idint否11username用户名varchar否20password密码varchar否20sex性别varchar否2email邮箱varchar否50oicqQQ号varchar是20signature签名档varchar是300grade用户权限varchar是20lxdz联系地址varchar是50tx用户头像varchar是30grzy个人主页varchar是50realname真实姓名varchar是30论坛帖子信息表tb_topic包括:帖子编号,帖子标题,帖子内容,帖子作者,帖子发表时间,所属板块信息,作者发帖时的心情表情,发帖用户的头像等信息。建立数据库表结构如下表5.8所示:表5.8tb_topic数据表字段描述类型空值长度id帖子编号int否4title帖子标题varchar否300content帖子内容text是0author帖子作者varchar是20submittime发表时间timestamp否0forumid板块idint否4xq发帖心情varchar是30rq用户头像int是4forumname板块名字varchar否20论坛帖子回复信息表tb_response包括:回帖编号,帖子编号,帖子名称,回帖标题,回帖内容,回帖子姓名,回帖时间,回帖用户的心情状态等信息。建立数据库表结构如下表5.9所示:表5.9tb_response数据表字段描述类型空值长度id回贴编号int否11topicid帖子编号int否4title回帖标题varchar否300content回帖内容text是0author回帖者姓名varchar否20submittime回帖时间timestamp是0xq回帖心情varchar否20topicname帖子名称varchar是100论坛板块信息表tb_forum包括:板块编号,板块名称,版主,板块创建时间等信息。建立数据库表结构如下表5.10所示:表5.10tb_forum数据表字段描述类型空值长度id版块编号int否11forumname版块名称varchar否20manager版主varchar是100createtime版块时间timestamp是05.4数据库的连接(1)加载数据库程序,并创建数据库连接对象。在Java程序中,可以通过“Class.forName(“指定数据库的驱动程序”)”方式来加载添加到开发环境中的驱动程序,通过DriverManager类创建数据库连接对象Connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,根据数据库的URL、用户名和密码,创建一个JDBCConnection对象。publicclassDatabase{ privatestaticDatabasedb; privateConnectioncon=null; privateStatementstate=null; privatePreparedStatementper=null; privateResultSetrs=null; privateCallableStatementcallstmt=null; publicstaticDatabasegetDatebase(){ db=newDatabase(); returndb; } privateDatabase(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/db_bbs","root","123"); }catch(Exceptione){ System.out.println("数据库连接异常"); e.printStackTrace(); } } publicvoidopenCon(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/db_bbs","root","123"); }catch(Exceptione){ System.out.println("数据库连接异常"); } }创建Statement对象:Statement类的主要是用于执行静态SQL语句并返回它所生成结果的对象,通过Connection对象的createStatement()方法可以创建一个Statement对象。publicResultSetopenStatement(Stringsql){ try{ getCon(); state=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); rs=state.executeQuery(sql); }catch(SQLExceptione){ System.out.println("创建Statement异常"); e.printStackTrace(); }finally{ returnrs; } }调用Statement对象的相关方法执行相对应的SQL语句:通过execuUpdate()方法用来数据的更新,包括插入和删除等操作。publicbooleanopenUpateStatement(Stringsql){ booleanisSuccee=false; try{ getCon(); state=con.createStatement(); state.executeUpdate(sql); isSuccee=true; }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnisSuccee; }关闭数据库连接:使用完数据库或者不需要访问数据库时,通过Connection的close()方法及时关闭数据连接。6前台功能模块的设计与实现6.1论坛主界面设计主页面是论坛的门户,所以主页面的设计好坏直接影响到整个论坛的形象。论坛首页所载的内容有:论坛工具栏,包括登录、注册、发贴、帮助、管理员登录、退出;论坛统计信息;论坛版面列表;论坛版权信息。论坛首页如图6.1所示:图6.1在线论坛首页界面对于论坛首页的实现主界面为index.jsp,下图是首页的组成图。论坛首页头部的欢迎信息和首页底部的开发者信息在前台每个网页上都是一样的,页面在布局上基本一致。页面结构组成如下图6.2所示:首页首页Index.jsp首页欢迎用户已登入top2.jsp用户未登入top.jsp标签论坛专区信息论坛开发者信息footer.jsp图6.2在线论坛首页组成图6.2用户登录注册模块设计6.2.1用户登录用户进入论坛后,若想发表帖子必须先登录,如果没有账号可以先进行注册。点击工具栏上的“登录”按钮,用户则可进入登录与注册界面,效果如图6.3所示。图6.3在线论坛注册登录界面该模块在用户登录时要进行用户名和密码的有效性检验,查询用户表,如果该用户存在则让他进入主页面,也就是前面介绍的论坛首页;如果无法登录成功则给予提示,用户名不存在或者密码错误,则回到登录页面以便用户再次输入用户名及密码登录。用户登入信息请求通过<s:from>表单发送的dologin.action实现,dologin.action根据struts.xml配置文件进行页面的跳转。<s:from>的请求代码如下:<s:formaction="dologin.action"id="loginForm"namespace="/"><s:textfieldid="name"name="login.username"size="13" maxlength="20"/><s:passwordid="password"name="login.password"size="13"maxlength="20"/><s:sumbit>提交</s:sumbit><s:reset>重置</sreset></s:form>Dologin.action登录功能实现代码如下:publicclassDoLoginextendsActionSupport{ privateLoginlogin=newLogin(); @Override publicStringexecute(){ if(LoginDAO.login(login.getUsername(),login.getPassword())){ ActionContext.getContext().getSession().put("name", login.getUsername()); ActionContext.getContext().getSession().put("islogin",1); returnsuccess; }else{ ActionContext.getContext().getSession().put("islogin",0); this.addFieldError("userlogin","你输入的用户名或密码错误,请重新输入"); returnerror; } } publicLogingetLogin(){ returnlogin; } publicvoidsetLogin(Loginlogin){ this.login=login; }}在struts.xml中的配置代码如下:<actionname="dologin"class="com.bbs.struts.action.DoLogin"> <resultname="success">index.jsp</result> <resultname="error">index.jsp</result></action><s:iftest="#==null"><!--怎么获得Session中的值--> <%@includefile="top.jsp"%><!--请用户登入--> </s:if> <s:else> <%@includefile="top2.jsp"%><!--用户不必登入--></s:else>6.2.2用户注册如果用户是首次访问在线论坛,还没有注册,可以单击登录注册界面的注册按钮进入新用户注册界面,先进行用户注册,这是用户进入论坛的一个通道,是任何论坛都不可缺少的一部分。注册界面效果如图6.4所示:图6.4在线论坛注册界面 6.3论坛帖子模块设计6.3.1发表新帖子点击某一在线论坛板块,进入帖子页面,单击“发贴”,则进入发表新帖子的页面;也可直接在页面头部点击发帖,进入发表帖子页面,如图6.5所示。图6.5在线论坛发帖界面本论坛只允许会员发表新帖子,可以发表帖子主题,发表者的心情状态,帖子的具体内容等,这也是帖子表里应有的最基本信息。其中“内容”是指书写帖子内容时输入框支持什么不支持什么等。具体内容输入框上的按钮可以对输入的内容进行字体等方面的设置,用过Word的人可以很容易掌握这些小按钮的用法,其中有加粗、斜体、下划线等,还可以设置字体效果等。输入框下方提供了一些小图片,用户单击表情图标就可以在帖子中加入相应的表情。所有的内容都填写完毕后,单击发表按钮则数据库中相应的帖子表增加一条记录,用户帖子发表成功。6.3.2帖子列表帖子是论坛的主要交流内容,是用户-网页-用户之间交流的必要手段。单击某一论坛板块,则进入帖子列表页面。浏览版块帖子效果如图6.6所示:图6.6在线论坛帖子界面浏览帖子页面及其功能实现的部分代码如下:publicclassDotopicListextendsActionSupport{ privateintforumid; privateList<TopicList>topicList=null; privateintpage; privateintiflogin; privateintpageCount; publicStringexecute(){ try{ topicList=TopicListDAO.search(page,forumid); pageCount=TopicListDAO.getPageCount(forumid); }catch(Exceptione){ topicList=null; pageCount=0; } returnSUCCESS; } publicintgetPageCount(){ returnpageCount; } publicvoidsetPageCount(intpageCount){ this.pageCount=pageCount; } publicintgetIflogin(){ returniflogin; } publicvoidsetIflogin(intiflogin){ this.iflogin=iflogin; } publicintgetForumid(){ returnforumid; } publicintgetPage(){ returnpage; } publicvoidsetPage(intpage){ this.page=page; } publicvoidsetForumid(intforumid){ this.forumid=forumid; } publicList<TopicList>getTopicList(){ returntopicList; } publicvoidsetTopicList(List<TopicList>topicList){ this.topicList=topicList; }}6.3.3浏览帖子从首页单击某一具体的帖子板块,可以浏览该板块的帖子。单击某一用户感兴趣的具体帖子,可以浏览该帖子的具体内容。浏览帖子界面如图6.7所示。浏览某一个具体帖子的界面,最上方发帖、回帖按钮,用户可以单击按钮进行相应的操作。再下来是作者的一些基本信息。同一水平线上与之对应的是帖子的具体信息,包括帖子的内容、发表时间等。还可以对帖子做相应的一些操作或进入相关链接。如果帖子有跟帖,则会在这个帖子的下方以同样的表现形式列出来。图6.7在线论坛跟帖界面7后台管理模块的设计与实现论坛后台的设计是为前台论坛功能服务的,前台主要是论坛帖子的管理,所以后台必须有支持前台帖子发布的论坛管理,用户个人信息的有些设置也是在后台管理的。后台的维护功能主要包括如下:论坛版块管理、帖子专区管理、回复主题管理、用户管理、管理员注销。7.1管理员登陆点击首页的管理员登陆按钮即可进入管理员的登陆界面,如下图7.1所示,管理员的账号和密码是数据库里默认已经存在的用户名admin,密码admin。管理员不可注册,只能后台修改普通用户权限成为管理员。图7.1在线论坛登陆界面管理员登陆成功后,可直接跳转进入后台管理界面,界面左侧是功能菜单,包括论坛板块管理,帖子专区管理,用户的权限管理,和用户注销功能。publicclassDoadminloginextendsActionSupport{ privateLoginlogin=newLogin(); publicStringexecute()throwsException{ if(LoginDAO.adminlogin(login.getUsername(),login.getPassword())){ ActionContext.getContext().getSession().put("adminName", login.getUsername()); returnsuccess; }else{ this.addFieldError("adminlogin","你输入的用户名或密码错误,请重新输入"); returnerror; } } publicLogingetLogin(){ returnlogin; } publicvoidsetLogin(Loginlogin){ this.login=login; }}7.2论坛管理管理员登录进入后台管理模块,可以新建论坛板块,删除论坛板块以及更换版主,如图7.2所示是管理员首先看到的论坛版块管理界面:图7.2论坛版块管理界面后台显示的首页部分主要采用了frame框架,使界面简洁易操作,格局一目了然。实现的部分代码如下所示:<framesetrows="35%,*"frameborder="0"framespacing="0"><framesrc="admintop.jsp"name="topFrame"scrolling="no"noresize><framesetcols="13%,14%,*,12%"frameborder="1"bordercolor="red"framespacing="0"><framesrc="kong.jsp"name="leftFrame"scrolling="NO"noresize> <framesrc="left.jsp"name="leftFrame"scrolling="NO"noresize><framesrc="main.jsp"name="mainFrame"scrolling="yes"noresize> <framesrc="kong.jsp"name="mainFrame"scrolling="no"noresize></frameset></frameset>7.2.1添加论坛版块论坛板块的管理包括新增专区、更换专区版主和删除该版块。如图7.3所示是单击新增专区按钮即可添加一个新的论坛板块,相应的数据库论坛版块表里增加一条记录。图7.3论坛版块管理界面添加论坛版块功能实现的部分代码如下所示:publicclassDoAddForumextendsActionSupport{ privateStringforumname; privateStringmanager; privateStringresult; publicStringexecute(){ if(ForumDao.AddRecord(forumname,manager)){ result="恭喜,成功增加版块!"; } else result="对不起,版块增加失败,请稍后再试。"; returnsuccess; } publicStringgetForumname(){ returnforumname; } publicvoidsetForumname(Stringforumname){ this.forumname=forumname; } publicStringgetManager(){ returnmanager; } publicvoidsetManager(Stringmanager){ this.manager=manager; } publicStringgetResult(){ returnresult; } publicvoidsetResult(Stringresult){ this.result=result; }}7.2.2删除论坛分类对数据有新增功能,就必然要有删除功能,要删除论坛版块,是通过单击删除专区按钮完成删除操作。删除论坛分类功能实现代码如下所示:publicclassDoDeleteForumextendsActionSupport{ privateintid; privateStringresult; publicStringexecute(){ if(ForumDao.deleteRecord(id)){ result="恭喜,成功删除!"; } else result="删除失败,该版还有帖子没删除!"; returnsuccess; } publicStringgetResult(){ returnresult; } publicvoidsetResult(Stringresult){ this.result=result; } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; }}7.2.3修改论坛版主单击界面上方的版块选择区,以及版主名称后,点击提交按钮,界面与图7.2相同,不同的是修改的界面绑定了原有的数据。修改选定的版块版主,数据库论坛表里相应的一条记录信息被修改了。7.3用户管理在这里后台用户模块的设计是对前台人员的维护。前台新建注册的系统用户,在此都可以看到,管理员可以对用户进行权限设置,在删除列选中相应的用户名后可以删除该用户。该模块的功能主要是管理前台系统的基本用户,为了用户信息不产生冗余,影响系统的性能。这给管理员一个进行管理用户的接口。如图7.4所示:图7.4论坛用户管理界面实现该模块功能的部分代码如下所示:publicclassDoAlteruserextendsActionSupport{ privateLoginuser; privateStringresult; publicStringexecute(){ if(com.bbs.struts.DAO.LoginDAO.UpdateRecord(user.getUsername(),user.getGrade())) result="修改成功!"; else result="修改失败!"; returnsuccess; } publicLogingetUser(){ returnuser; } publicvoidsetUser(Loginuser){ this.user=user; } publicStringgetResult(){ returnresult; } publicvoidsetResult(Stringresult){ this.result=result; }}publicclassDoDeleteuserextendsActionSupport{ privateStringusername; privateStringresult; publicStringexecute(){ if(com.bbs.struts.DAO.LoginDAO.deleteRecord(username)) result="删除成功!"; else result="删除失败!"; returnsuccess; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetResult(){ returnresult; } publicvoidsetResult(Stringresult){ this.result=result; }}7.4专区帖子管理在这里管理员主要是对某一专区帖子的管理,可删除一些不好的帖子或者重复的帖子等。专区帖子管理界面如下图7.5所示。图7.5论坛帖子管理界面7.5回复主题管理在该管理模块,管理员同样是对用户的跟帖进行管理,删除一些不好的,不当的言论。回复主题管理界面如下图7.6所示。图7.6回复主题管理界面7.6管理员注销当管理员完成后台操作后,可进行账号的注销。点击左侧的注销登录,可退出登录,注销成功后自动转到前台在线论坛首页。功能实现代码如下:packagecom.bbs.struts.action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;publicclassDologinoffextendsActionSupport{ publicStringexecute(){ ActionContext.getContext().getSession().clear(); returnsuccess; }}8结论随着计算机、通信和多媒体技术的发展,使得网络的应用更加广泛。尤其在跨入21世纪后,在网络上,几乎每一个网民都有一种在某个特定的区域就某一感兴趣的话题或某种情感、心理的诉求而进行交流的需要,这种需要引发了网络虚拟社区的诞生。也就是论坛系统(bulletinboardsystem)。Struts技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作,因此本论坛采用Struts技术开放能满足这种需求。论文中详细讨论了在线论坛系统的设计思想,包括系统体系结构的设计、系统功能模块设计、数据库设计、系统的实现等。根据软件设计和实现的情况,重点阐述了系统实现过程中功能模块设计、数据库设计、组件的设计、前台显示部分设计、后台维护部分设计等关键设计。到论文截稿时,基于Struts的在线论坛系统已通过运行测试,基本完成预期目标的实现;能够达到网民在某个特定的区域就某一感兴趣的话题或某种情感、心理的诉求而进行交流的需要。但由于系统开发的经验不足,水平有限,所以目前在线论坛系统的实现上还有许多地方需要进一步的改善和提高。基于Struts的在线论坛系统只是实现了论坛的基本功能,还有很多比较流行的功能尚未实现,在算法的采用和数据库逻辑的设计上还存在一些不完善的地方。在以后的学习和工作中,将继续努力使系统更加完善。在线论坛系统设计和实现过程中系统从不可用,到可用运行,从字符乱码,到正常的中文显示。一次次的改进,这使本人认识到设计、算法在系统开发中的重要性和理论与实践相结合的重要性。参考文献[1]孙家广.软件工程理论、方法与实践[M].北京:清华大学出版社:2007年.[2]朱福喜,唐晓军.Java程序设计技巧与开发实例

北京:人民邮电出版社:2004.[3]《程序员》杂志社.程序员2004合订本下

北京:电子工业出版社:2005.[4](美)S·T·金,D·韦弗.因特网之传播学研究:主题元分析.陈源摘译[M].国外社会科学,2003.65-68[5]黄少华.网络时代社会学的理论重构[M]。宁夏大学学报(人文社会学科版),2002.03-12.[6]陈洁.BBS,中国公共领域的曙光[M]。中国青年研究,1999.52-54.[7]孙卫琴.java网络编程精解.北京:电子工业出版社,2007.106.[8]王程辉、李存斌.J2EE框架与MVC技术相结合模式的应用与实现[A].2006北京地区高校研究生学术交流会—通信现信息技术会议论文集(下)[C].北京:中国电子学会、北京邮电大学,2006.12.22:1652-1658.

[9]张桂元,贾燕枫.Struts开发入门与项目实践[M].北京:人民邮电出版社,2009.12.

[10]汪孝宜,刘中兵,徐佳晶.JSP数据库开发实例精粹[M]..北京:电子工业出版社.2005.1[11]杨学瑜.JSP入门与提高[M].北京:清华大学出版社.2002:23-57[12]孙卫琴.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社.2005.8[13]StevenHolzner.Java..MATTTELLES[M].北京:机械工业出版社,2002.1

[14]PhilHanna.JSP,Technologydaqo[M].北京:机械工业出版社,2002.3

[15]KarlMoss.JavaServletDevelopersguide[M].北京:清华大学出版社,2002致谢基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统HYPERLINK"/d

温馨提示

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

评论

0/150

提交评论