学生个人博客 毕业论文.docx_第1页
学生个人博客 毕业论文.docx_第2页
学生个人博客 毕业论文.docx_第3页
学生个人博客 毕业论文.docx_第4页
学生个人博客 毕业论文.docx_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

学生个人博客 摘要:随着科学的发展,技术的进步,计算机在人们生活学习中扮演着越来越重要的角色。人们开始利用计算机交流沟通也变得越来越频繁,而博客作为交流的工具,已经成为了人们深度交流沟通的网络新方式。学生个人博客主要是为了方便学生在线交流,沟通,可以交流学习心得,展示个人才能,聊天交友,还可以作为网络个人日记,发表自己的心情。本博客主要由三个功能模块组成:注册登录,发表文章照片,评论及浏览组成。采用javaee三大核心框架(struts2,hibernate,spring)的设计模式,利用hibernate与mysql数据库无缝对接,后台数据库是mysql5.5,该数据库具有是开源的数据库系统,该数据库具有较高的完整性,一致性,安全性,博客网站本身运行在tomcat6.0服务器上。关键词:博客,核心框架,学子博客,mysql数据库目录摘要1abstract1第一章 绪 论41.1选题背景41.2课题研究意义41.3论文的组织结构和具体安排4第二章 个人博客需求分析52.1 可行性分析52.1.1 技术可行性52.1.2.经济可行性52.2 个人博客需求概述52.2.1网站目标52.3 个人博客网站需求模型52.3.1功能描述52.3.2详细功能描述62.3.3主要功能模块处理流程的描述6第三章 整体设计103.1 数据库设计103.1.1数据库设计概述103.1.2 用户信息表结构设计113.1.3个性化设置表表结构设计113.1.4文章列表表结构设计113.1.5评论列表表结构设计123.1.6点击量列表表结构设计123.1.7留言板列表表结构设计12第四章 程序设计与编码134.1开发平台与工具134.1.1 myeclipse8.6平台134.1.2 服务器和数据库134.2程序设计134.2.1程序设计概述134.2.2 三大框架之间的连接和配置144.2.3注册登录模块的程序设计204.2.4个性化设置模块功能的实现244.2.5 发表查看文章模块功能的实现244.2.6 评论模块功能的实现274.2.7 相册模块功能的实现294.2.8 组件化分页模块314.2.9 个人信息模块334.2.10 留言板模块功能的实现35第五章 测试博客395.1 软件测试分析395.1.1 测试的目的和重要性395.1.2 测试的方法与步骤395.2设计测试用例395.2.1单元测试395.2.2集成测试415.2.3 验收测试41第六章 结束语426.1 完成效果426.2 改进意见426.3 收获体会42参考文献:43致 谢44第一章 绪 论1.1选题背景在科技飞速发展的今天,互联网正成为人们快速获取、发布和传递信息的最为便捷的渠道,它在人们日常的生活和学习中发挥着重要的作用。而近年来博客和博客文化正在成为互联网的热点,并被视为是e-mail,bbs,icq之后的第四种网络交流方式,由于博客的沟通方式比电子邮件、讨论群组等更为简单容易,现在已经成为了家庭、公司、部门、团队之间越来越盛行的沟通工具了。博客正在改变着当今社会的交流方式,越来越多的人选择加入到博客的阵营。我之所以选择做个人博客,首先是因为可以从中学到很多的网络和编程方面的知识,其次通过这个毕业设计可以很好的锻炼自己的动手能力,并提高自己的个人能力。最后个人博客是当前互联网上的热点,它既可以作为一个聊天工具又能作为一个交流的平台,对大多数人而言都是非常实用的。1.2课题研究意义随着知识经济的到来,人们已经开始向信息化社会迈进。信息增长的速度越来越快,人们希望能够用一种便捷有效的工具来处理这些信息,并从中获取对自己有用的信息,以提高自己的工作效率。在这个信息化的时代,网络技术的运用和发展不仅能够造福于人们,还能够促进社会的进步,经济的发展。因此,作为一种交流和沟通的工具,对博客的研究是非常有必要有意义的。1.3论文的组织结构和具体安排本次设计的目标是,开发一个个人博客网站。借助该网站,不同年级不同学院的学生可以通过查看文章学习到自己需要的知识,并能够自己发表文章,发表个人的心得体会等。还可以上传自己的照片,聊天交友等等。论文分为五个部分:第一章即本章绪论,简述开发个人博客的背景,以及研究博客的意义。第二章为需求分析,本章中明确了博客需要实现的功能,分析了博客的开发流程,并介绍根据需求选择相应的开发工具和技术。第三章是总体设计,详细描述了博客需要的数据库的设计情况,并给出了总体界面的设计方案。 第四章为博客的程序设计和具体的编码,包括各个模块的实现方法及其关键的代码,并截取了一些图片作为参考,以便能够更加直观的了解博客的实现情况。第五章是对博客进行整体的测试,测试功能实现并对测试结果进行记录分析。第六章是结束语,总结本次设计中的难点和亮点以及自己在这次毕业设计中学到的知识。 第二章 个人博客需求分析2.1 可行性分析个人博客作为一种新的交流沟通的工具和平台,能够有效地促进交流,解决学生的实际问题,方便学生的学习生活,开发本网站的可行性研究如下:2.1.1 技术可行性技术上的可行性分析主要分析技术条件能否顺利完成开发工作,能否满足实际的需求。本网站使用java语言开发,利用开源的tomcat作为运行服务器,用户界面简洁,易操作。网站的数据库采用开源的mysql存储数据,mysql能够处理较大的数据,同时保持数据的完整性和安全性。因此开发本网站的平台是成熟可行的。2.1.2.经济可行性随着经济的发展,计算机的普及程度已经非常的高了,而开发本网站的配置和技术均可行,因此开发这样的一个网站成本是可以控制的,并且网站的运行可以加强学生之间的交流和沟通,方便学生的学习生活,还可以有一定的经济回报,因此该网站在经济上是可行的。2.2 个人博客需求概述2.2.1网站目标本网站的核心架构是javaee中的三大框架,在网站中主要有两种类型的用户。即注册用户和非注册用户。注册并登陆的用户可以在网站中查看自己活着他人发表的文章,可以上传自己的照片,还可以对自己感兴趣的文章加以标注和评论。而对于非注册的用户,只能以浏览者的身份进入,可以查看网站中其他人发表的文章,也可以匿名的发表评论,但是不能写文章,也不能上传自己的图片等。2.3 个人博客网站需求模型2.3.1功能描述个人博客网站的主要目标是作为一个交流的工具和一个沟通的平台,让不同年级不同专业的学生可以在这里交流学习的经验,可以发表自己的想法,还可以上传自己的图片来聊天交友,本网站的基本功能如下:1注册登录凡是要发表文章显示个人信息的用户均必须先注册账号,再通过登录验证才能够进行各种功能的操作,不注册登录的用户在网站中权限较低。2网站设置网站制作者可以修改网页的基本页面,更改系统时间。3.用户功能 用户可以查看,删除,评论相应的文章,可以通过问题回自己的账户密码。4.其他的功能网站制作者可以管理网站,并拥有起亚用户所拥有的所有的权限和功能。2.3.2详细功能描述学生通过浏览器访问到本网站,可以使用一下功能:1)注册用户按照规定注册一个正确的账号。2)用户登录输入注册过的用户名和密码登录。3)修改登录密码可以修改自己的登录密码4)查看文章可以查看其它人发表的文章,也可以查看自己已经发表过的文章。5)修改个性化设置可以更改个人的设置6)评论文章可以对好的文章进行评论,还可以查看别人的评论。7)上传相册对登录用户,可以上传自己的照片。8)链接本网站提供了对一些知名博客的链接,可以点击链接进入其他博客网站。8)留言本网站提供了留言板,所有登陆用户都可以进行留言或者查看别人的留言。2.3.3主要功能模块处理流程的描述个人博客网站主要可以分为几个个大的模块,第一个模块是用户注册登录模块,即进入网站模块。第二个模块是用户的个性化设置,第三个模块是发表文章,查看文章内容,第四个模块是相册模块开发与rss订阅。用户注册登录模块:(1)功能描述完成注册登录,填写基本信息查看并修改个人信息。(2)具体流程图个性化设置模块(1)功能描述可以设置个性化页面,用于显示在网站上方。可以修改个性化语句。(2)具体流程图发表,管理文章模块(1)功能描述登陆成功后发表自己的文章。查看管理自己的文章,还可以查看他人的文章。(2)具体的流程图:相册模块开发与rss订阅:(1)功能描述可以点击上传图片到服务器。通过rss订阅能够快速查找到文章和显示新添加的文章(2)流程图第三章 整体设计3.1 数据库设计3.1.1数据库设计概述数据库是整个系统最核心的部分,数据库设计的好坏直接影响到整个系统的设计成败,因此本节专门来讨论有关数据库的设计。数据库作为管理数据的最新技术。近年来随着计算机的大力发展数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于现在的数据库都具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。数据库的出现改变了人们存储数据的方式,极大地提高了存储数据的能力,方便了人们对数据的管理和利用,并提高了人们的决策的可靠性。目前,数据库已经成为现代信息系统不可分割的重要组成部分。数据库技术也已经成为计算机领域中发展最快的技术之一。数据库设计是将现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。数据库的设计都必须遵循一定的规则,每一个数据库都有自己不同的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库都遵循第三范式。即:数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了操作数据库的速度。整个博客网站所包括的信息表有 1:用户信息表:(b_user)2:个性化设置表:(b_blog)3:文章列表:(b_article)4:评论列表:(b_criticle)5:点击量列表:(b_clickrate)5:留言板列表:(guestbook)等相应信息表。可将这些信息抽象为所需要的数据项和数据结构1) 用户信息表(用户id,用户姓名,昵称,邮箱,密码,验证码,是否验证,密保问题,密保答案)2) 个性化设置表(个性化id,用户id,个性化题目,个性化内容)3) 文章列表(文章id,文章标题,文章内容,用户姓名,发表日期,是否已读)4) 评论列表(评论id,文章id,评论内容,用户姓名)5) 点击量列表(点击量id,文章id,点击ip地址,点击时间)6) 留言板列表(留言id,作者,标题,内容,留言时间)注:带方框的表示表的主键3.1.2 用户信息表结构设计 用户信息表主要保存博客网站已经注册过的用户基本信息,主要包括用户的登录账户和密码以及一些基本的验证。表的具体结构如下所示:用户信息表 b_user字段名称数据类型字段长度是否为空说明useridint10nokeyusernamevarchar50no用户名nicknamevarchar20no昵称passwordvarchar20no密码emailvarchar50no邮箱emailvalidatecodevarchar50no邮箱验证码isvalidateemailchar1yes邮箱是否已验证questionvarchar20no密保问题answervarchar50no密保答案3.1.3个性化设置表表结构设计 该表的设计主要是用于存储登录用户的个性化设置,主要设置其页面,包括个性化标题和个性化内容,当用户进入时其个性化语句会显示在上方页面的中央,表的具体结构设计如下所示:个性化设置表b_blog字段名称数据类型字段长度是否为空说明blogidint10nokeyuseridint10yse 用户id号blogtitlevarchar20no 个性化标题idiographvarchar20no个性化内容3.1.4文章列表表结构设计文章列表主要用来存储用户发表的文章,包括文章的标题,内容,该用户是否已阅读,查看的日期以及用户名。用过该表可以读取当前博客网站的所有文章信息,还可以根据登录用户名查看用户个人发表的文章信息,表的具体结构设计如下所示:文章列表b_article字段名称数据类型字段长度是否为空说明articleidint10nokeytitlevarchar255no 文章标题contentvarchar255no 文章内容usernamevarchar255no 用户名datedatetime19yes查看文章日期hasreadint10no用户是否已查看3.1.5评论列表表结构设计此表的设计主要用于存储用户对文章的评论信息,主要有两种用户:未登录的用户和登录用户,登录用户在评论后会显示其用户名,未登录用户只能以匿名的方式发表评论,表的具体结构设计如下所示:评论列表b_criticle字段名称数据类型字段长度是否为空说明critiqueidint10nokeyarticleidint10no 文章id号critiquecontentvarchar500no评论内容usernamevarvhar255no用户名3.1.6点击量列表表结构设计该表的设计主要用于记录文章的点击数量,这里要根据用户的ip地址来判断不同的用户,因此该表存储文章的id号,用户的ip地址以及点击的时间。表的具体结构设计如下所示:点击量列表 b_clicrate字段名称数据类型字段长度是否为空说明clickrateid int10nokeyarticleidint10no 文章id号ipvarchar255no 访问ip地址clicktimedate10yes点击的时间3.1.7留言板列表表结构设计该表的设计主要用于记录文章的点击数量,这里要根据用户的ip地址来判断不同的用户,因此该表存储文章的id号,用户的ip地址以及点击的时间。表的具体结构设计如下所示:留言列表 guestbook字段名称数据类型字段长度是否为空说明id int10nokeyauthorvarther20yes作者titlevarchar20yes 标题contentvarthar500yes评论内容intimevarchar20yes留言时间第四章 程序设计与编码4.1开发平台与工具4.1.1 myeclipse8.6平台本博客采用myeclipse工作平台,myeclipse企业级工作平台(myeclipse enterprise workbench ,简称myeclipse)是对eclipse ide的扩展,利用它我们可以在数据库和j2ee的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的j2ee集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持html, struts, jsf, css, javascript, sql, hibernate。在结构上myeclipse的特征可以分为七类:1、j2ee模型;2、web开发工具;3、ejb开发工具;3、应用程序服务器的连接;4、j2ee项目部署服务;6、数据库服务;7、myeclipse整合帮助。在个人博客的开发过程中,应用的是myeclipse8.6这个版本,作为myeclipse较新的版本,myeclipse8.6中的关键特性有:支持最新版本的apache tomcat,支持spring项目,spring安全向导,spring服务从wsdl,spring代码辅助管理,完整的java探测,支持ajax工具,支持web服务工具。因此个人博客运行的服务器我选择的是新版本的apache tomcat 6.0.35版本。4.1.2 服务器和数据库在系统的开发过程中使用的服务器是tomcat,tomcat来源于apache软件基金会(apache software foundation)的jakarta 项目中的一个核心项目,由apache、sun 和其他一些公司及个人共同开发而成。由于有了前sun公司的参与和支持,最新的servlet 和jsp 规范总是能在tomcat 中得到体现。并且因为tomcat 技术先进、性能稳定,而且免费,成为目前比较流行的web 应用服务器。因此本博客选择了tomcat作为其服务器。开发用的系统工具如下表所示:个人博客开发平台和工具工具名称用途myeclipse8.6tomcat6.0mysql5.5博客的开发平台web服务器数据的存储4.2程序设计4.2.1程序设计概述本博客在设计的过程中运用了当今非常流行的编程模式-三层架构的思想,即将界面层,业务逻辑层,数据操作层相分离,使用javaee中非常著名的三大框架(struts2,spring,hibernate)来分别实现,其中界面层使用struts2,业务逻辑层使用spring,数据操作层使用hibernate。struts2是用于web项目中ui层的开源的框架,是经典的mvc模式实现的案例。作为一款开源的框架,struts2具有非常明显的优势和特点:1.struts2中将业务数据,显示页面,动作处理等进行分离,极大地方便了代码的维护。2.struts2采用的是front controller模式来实现对各种触发动作的处理,要求所有的请求都经过统一的入口,再进行转发,方便了我们对代码的统一控制和管理。3.struts2中通过action类实现各种逻辑,并且利用struts2的核心标签来完成对数据的呈现。4.struts2在servlet容器中运行,通过配置文件web.xml来完成到相应的action的跳转。spring主要运用于业务逻辑层,在功能上有润滑剂的美称。spring主要通过控制反转,aop应用,面向接口编程来降低组件之间的耦合度,增加系统的扩展性。spring作为一个分层框架,由七个定义良好的模块组成,其中最重要的模块是核心容器。核心容器定义了创建、配置和管理bean的方式,并且提供了spring框架的基本功能。beanfactory作为核心容器的组件,是工厂模式的实现。其利用控制反转将应用程序的配置和应用分开,减少了代码的耦合。hibernate主要作用于数据层,主要用于封装数据访问层的组件。在应用程序中的数据用对象来体现,而数据库中,数据用表的形式保存。hibernate利用对象- 关系映射,将应用程序中的对象(object)与表中的数据(relationship)之间的映射(mapping)。利用hibernate可以直接从数据库中取出java对象,并将java对象直接保存在数据库中,中间的sql等语句都被封装了。4.2.2 三大框架之间的连接和配置 org.springframework.web.context.contextloaderlistener contextconfiglocation classpath:config/spring/applicationcontext.xml 根据需求将spring分配置文件分类:基本的配置信息(perties),主要用于连接数据库:在spring的配置文件applicationcontext.xml中加载外部配置文件信息: classpath:config/props/perties $dialect$format_sql$show_sqlconfig/hibernate/hbm/user.hbm.xmlconfig/hibernate/hbm/blog.hbm.xmlconfig/hibernate/hbm/article.hbm.xmlconfig/hibernate/hbm/clickrate.hbm.xmlconfig/hibernate/hbm/critique.hbm.xml 在hibernate的配置文件里加载数据库表信息hbm配置文件主要放置表的信息:(如article.hbm.xml文件)struts2的配置文件放在自定义的文件夹下:在web.xml中添加struts2监视器: struts2org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter configstruts-default.xml,struts-plugin.xml,config/struts/struts.xml struts2 *.action struts2 *.jsp 声明spring对struts2管理: 其中applicationcontext-web.xml主要用于声明struts2中的action:(部分代码) 其中applicationcontext-biz.xml主要加载业务逻辑层的action:(部分代码)applicationcontext-dao.xml主要加载dao层的action:4.2.3注册登录模块的程序设计本模块主要用于用户第一次进入时注册和登录,用户注册时根据提示正确的填写基本信息,成功后即完成。登录时必须输入正确的用户名和密码,否者会提示错误,并禁止用户发表文章。注册界面登录界面没有账号的用户首先选择注册账户,在成功注册后既可以开始登录了。在正确输入了用户名,密码和验证码后用户登录成功。这里注册界面我用了两种校验,第一种是在客户端jsp页面进行校验,第二层校验是在服务器端校验,利用struts2提供的方法进行。注册模块代码:public class doregistaction extends baseactionprivate user user;private string validatecode;private string geterrorinfo;private iuserservice userservice; /这里要利用spring的配置获取器对象public void validate() /用户名检验if(null = user.getusername() |.equals(user.getusername().trim()this.addfielderror(user.username, 用户名不能为空);return;if(user.getusername().length()20)this.addfielderror(user.username, 用户名长度应为520位);return;/密码检验if(null = user.getpassword() |.equals(user.getpassword().trim()this.addfielderror(user.password, 密码不能为空);return;if(user.getpassword().length() 20)this.addfielderror(user.password, 密码长度应为520位);return;/确认密码检验if(null = user.getrepassword() |.equals(user.getrepassword().trim()this.addfielderror(user.repassword, 重复密码不能为空);return;if(!user.getrepassword().equals(user.getpassword()this.addfielderror(user.repassword, 两次输入密码不一致);return;/昵称检验if(null = user.getnickname() |.equals(user.getnickname().trim()this.addfielderror(user.nickname, 昵称不能为空);return;if(user.getnickname().length()20)this.addfielderror(user.nickname, 昵称长度应为220位);return;/邮箱验证/昵称检验if(null = user.getemail() |.equals(user.getemail().trim()this.addfielderror(user.email, 邮箱不能为空);return;if(user.getemail().length()20)this.addfielderror(user.email, 邮箱长度应为220位);return;/密码保护答案检验if(null = user.getanswer() |.equals(user.getanswer().trim()this.addfielderror(user.answer, 密码保护答案不能为空);return;if(user.getanswer().length()50)this.addfielderror(user.answer, 问题长度应为250位);return;/检验验证码是否正确if(null = validatecode | .equals(validatecode)this.addfielderror(validatecode, 验证码不能为空);return;/获取生成的验证码string code = (string) this.session.get(imagecode);if(!code .equals( validatecode)this.addfielderror(validatecode, 验证码不正确);return;public string execute()try /模拟生成邮箱验证码string emailcode = emailcode.emailvalidatecode().tostring();user.setemailvalidatecode(emailcode);user.setisvalidateemail(false);/保存用户信息到数据库if(userservice.registuser(user)/将用户信息放在session中保存this.session.put(userregistinfo, user);return success;else/用户名被占用geterrorinfo = 用户名已被占用;return input; catch (exception e) e.printstacktrace();return error;用户登录代码:public string execute() throws exception /1 验证验证码是否正确if(! validatecode .equals(string) this.session.get(imagecode)validatecodeerrorinfo = 验证码错误;return tologin;/2 验证输入的用户名和密码if(!userservice.isrightuser(user)usernameorpassworderrorinfo = 用户名或者密码错误;return tologin;/将用户信息保存在session中this.session.put(userlogininfo,userservice.getuser(user);return success;4.2.4个性化设置模块功能的实现本模块的功能是用户对自己的页面进行个性化的设置,可以设置个性化标题和内容,成功后会显示在用户页面的上方,其中个性化设置的界面如下:个性化设置代码:/ 获取个性化内容public blog getbloginfo(user user) list list = this.gethibernatetemplate().find(from blog blog where blog.user =

温馨提示

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

评论

0/150

提交评论