


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
博客系统毕业设计论文基于java web技术博客项目的设计论文目 录一、绪论3(一)项目开发的背景3(二)研究开发的目的和意义3(三)博客项目的可行性分析4二、博客项目系统的需求分析4(一)博客项目所面向的群体4(二)博客项目功能分析4(三)博客项目技术架构图5三、博客项目系统的概要设计6(一)系统功能模块图6(二)系统的用例图7(三)系统的总体流程图10四、博客项目系统的数据库设计13(一)数据库的概念模型13(二)数据库表的设计16(三)数据表之间的关系18五、博客系统的详细设计18(一)公共模块的详细设计18(二)管理员的详细设计20(三)博主的详细设计21六、博客项目系统开发中遇到的问题25(一)jsp中出现的常见错误25(二)servlet中出现的常见错误26(三)其他常见错误26结论27致谢27参考文献28论 文 摘 要博客是继email、bbs、im(即时通讯)之后出现的第四种网络交流方式,无论在国外还是国内,发展都非常迅速。因此,基于java web技术开发和设计的博客项目系统,并运用mvc开发模式,eclipse+myeclipse6.0集成开发环境,数据库技术等设计了博客项目系统,并利用它天然的优势即个人化、专业化、小型化等特点产生出创建博客的思路来完成博客的设计与开发。 本项目主要阐述了不同用户对博客的不同管理,对管理员来说,有博主管理、在线统计等功能模块。对于普通用户来说,有注册、登录、浏览文章、发表文章等功能模块。对博主来说,有博文发表和博文管理、博文类别和类别管理、博文评论和评论管理、修改密码、注册用户和管理等模块。关键词:博客 tomcat5.0服务器 sql server数据库 博文管理 类别管理一、绪论(一)项目开发的背景blog博客网站致力于为广大博客提供优质博客页面服务的商业网站。每个博客都希望借助自己的博客页面宣传自己,而博客数量越多,网站的点击率越高就越能够吸引广大的企业客户选择该商业网站作为媒介,将自己的产品展现给客户。可以说,对这些博客网站而言:为博客提供良好的服务就意味着为网站带来更多的商业客户。因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能。1. 博客的注册、登录验证功能2. 普通用户浏览文章和发表评论的管理3. 文章详细内容及相关评论显示4. 博客个人文章管理维护功能5. 博客个人文章分类管理维护功能6. 博客个人友情链接维护功能7. 博客个人基本信息管理维护功能8. 个人上传图片和相册管理的功能9. 管理员对博主的管理10.管理员对个人信息的管理11. 管理员对网站在线人数的统计(二)研究开发的目的和意义博客(blog)作为web 2.0的典型代表,已风靡网络世界。那么,博客究竟是什么?简单一点的blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识与他人分享、交流,同时又通过个人博客结识更多志同道合的朋友,使大家在网上可以进行各种信息的交流,博客系统为大家提供了学习交流、工作交流、情感交流的平台,使人们的工作更加简单快捷,使人们的生活更加丰富多彩。(三)博客项目的可行性分析系统可行性分析主要从经济可行性、技术可行性和操作可行性三方面去分析。1. 经济可行性分析从系统的开发和效益关系上讲,采用jsp这个可以开发出交互、高性能web数据库应用的技术进行开发,效率较高。该系统的开发不需要花费太多的经费,只需在域名和服务器空间租用上有开销,因为个人网站不涉及超大容量的文件存储和庞大的访问量,因此对于服务器来讲,要求不会太高,开销不会很大。因此,从经济性分析是可行的。2. 技术可行性分析本系统采用的是jsp+servlet+javabean(mvc)的开发架构,对于一个大三学生来说,基本具备了计算机专业知识,有一定的编程基础,熟悉和掌握数据库及网络相关知识,具备开发条件。故从技术来说也是可行的。3. 操作可行性分析该系统操作上非常简单,对于用户来说,只要具备ie浏览器5.5版本以上即可通过域名搜索即可登录本站。二、博客项目系统的需求分析(一)博客项目所面向的群体博客系统主要是用于有共同爱好的人的交流与沟通,每个博客都希望借助自己的博客页面宣传自己,而博客数量越多,网站的点击率越高就越能够吸引广大的企业客户选择该商业网站作为媒介,将自己的产品展现给客户。可以说,对这些博客网站而言:为博客提供良好的服务就意味着为网站带来更多的商业客户。所以博客系统是面向大众的。(二)博客项目功能分析博客系统是一个多用户、多界面的系统,主要包括以下几个模块组成。(1)管理员模块本模块主要是由用户管理、在线统计、更新公告三部分组成。管理员可以删除用户和冻结用户,而且还可以对已经冻结的用户进行解冻;另一方面可以实现对在线人数的统计。(2)普通用户模块本模块主要由注册、登录、浏览博客、评论四个部分组成。普通用户可以对其他用户的博客内容进行浏览、评论。也可以通过注册后登录博客系统,申请一个属于自己的博客。(3)博主模块本模块主要由管理博文(发表博文、删除博文、修改博文)、管理评论(回复评论、删除评论)、管理分类(增加分类、修改分类、删除分类)、管理相册以及管理自己的信息等功能。(三)博客项目技术架构图博客项目采用经典的mvc分层设计模式,将模型(model)、视图(view)、控制器(control)各层单独设计实现,各层之间也有联系,这样便于代码重用和维护,具有良好的可读性、可重用性和可扩展性。博客系统技术架构图如图1所示。视图jsp控制器servlet模型javabean数据库sqlserver图1 架构图三、博客项目系统的概要设计(一)系统功能模块图本系统分为前台设计和后台设计,其中前台设计针对的用户身份是普通用户和博主,后台设计针对的用户身份是管理员。1. 前台设计前台设计主要实现的功能有:对普通用户来说,主要有注册、登录、浏览文章和发表评论;对博主来说,主要有管理博文、管理评论、管理分类、相册管理、用户管理等功能。前台功能模块图如图2所示。博客前台普通用户博主登录注册浏览文章发表评论管理文章管理分类管理相册管理个人信息发表文章修改文章删除文章增加分类修改分类删除分类上传照片浏览照片更新公告修改基本信息图2 前台功能模块图2. 后台设计后台设计实现的功能主要功能有:对博主的管理,网站公告的管理,和在线人数的统计。后台功能模块图如图3所示。博客后台管理员用户管理更新公告在线人数统计删除博主冻结博主图3 后台功能模块图(二)系统的用例图用例图是实现对系统功能更全面的描述,根据系统的功能模块来对用户的功能一一的说明。1. 普通用户普通用户一般使用的功能如图4所示。图4 普通用户用例图(1) 注册普通用户可以通过博客网站注册功能开通自己的博客,成为一名博主。注册信息包括注册人的用户名、密码、有效邮箱等。(2) 浏览文章博客最吸引人的当属博主们充满创意的文章,包括技术类、情感类、个人日记类等等。普通用户可以通过文章了解到博主的情感和思想,有时候会引起共鸣进而成为朋友。(3) 发表评论普通用户可以对某文章发表评论,来作为与博主沟通的途径。2. 博主博主除了拥有普通用户全部的功能外,还可以维护自己的博客,包括管理文章、管理分类、管理公告等,如图5所示。图5博主用例图(1)管理文章博主可以通过博客发表文章、修改文章、删除文章等。文章可以使原创,也可以使转帖引用,在本系统中并不作区分,都需要博主输入文章内容。(2)管理评论博主通过管理评论功能对普通用户的评论进行回复或者删除。(3)管理类别为了便于组织文章,一般博主都会给文章分类,如技术类,情感类等,博主通过管理类别可以实现对类别的增加、修改、删除等功能。(4)个人信息管理通过个人信息管理,博主可以修改自己的密码,个人信息等资料,而且换可以更新自己的公告。博主详细的用例图如6所示。 图6 博主详细用例图3. 管理员管理员是博客网站的管理者,通常对网站进行综合管理,具体如图7所示图7 管理员的用例图(1)用户管理管理员可以对已经注册过的博主进行管理,可以删除或者冻结用户。(2)更新公告如果博客网站有什么新的新闻或消息,可以通过更新公告来告知广大用户。(3)在线统计作为博客系统的管理员,对博客动态信息的实时监控与统计,无疑会对做出正确的运营决策起到关键的作用。(三)系统的总体流程图根据博客系统的需求分析,系统总体的流程图可以从前台和后台两个角度进行。1.前台系统流程图(1)普通用户流程图按照系统的功能分析,我们知道普通用户可以操作的功能就是注册、登录、浏览文章以及发表评论。它的流程图如图8所示。图8 普通用户流程图(2)博主流程图博主就是在博客网站上已经注册过的用户,他可以直接登录到自己博客的首页,登录成功以后就可以实现发表文章、管理文章、管理分类、管理相册等功能。具体流程图如图9所示。图9 博主流程图2.后台系统流程图后台主要是针对管理员的,对管理员来说,主要是对用户的管理,和对网站的维护等等。流程图如图10所示。图10 管理员流程图四、博客项目系统的数据库设计(一)数据库的概念模型概念模型不涉及信息在计算机系统中的表示,是面向现实世界的第一层抽象,主要用于按照用户的观点来对数据和信息进行建模,作为现实世界和机器世界的一个中间层次,是数据库设计人员进行数据设计的工具和与用户进行交流的语言。概念模型的表示方法有很多,其中最著名最常用的的就是p.p.s.chen 于1976年提出的实体关系方法(e-r方法)。根据以上各节对系统的需求分析和功能模块的分析,规划出本系统使用的数据库的关键实体是用户实体、文章实体、评论实体、分类实体。下面将一一列出各个关键实体的e-r图。(1)用户实体在博客系统中,用户实体是管理员和普通用户。用户实体主要包括用户名字、用户密码、邮箱等属性。用户实体的e-r图如11所示。管理员主要包括管理员名、管理员密码、管理员id等属性。管理员实体的e-r图如图12所示。用户性别用户名字用户密码邮箱图11 用户实体e-r图管理员编号id密码名字公告图12 管理员实体e-r图(2)文章实体在博客系统中,用户文章实体是指博主发表的文章中所包含的属性。文章实体主要包括文章的id、文章标题、类别id、发布日期、摘要、内容、作者、浏览次数。文章实体的e-r图如13所示。文章文章id文章标题内容浏览次数类别id发布日期摘要作者图13文章实体e-r图(3)评论实体在博客系统中,评论实体是指系统中的普通用户者和已经注册过的博主对博主发表过的文章进行评论。评论实体主要包括评论id、评论人的名字、评论内容、评论时间、文章id。评论实体的e-r图如14所示。评论评论id评论人名字评论内容评论时间文章id 图14 评论实体e-r图(4)类别实体在博客系统中,类别实体是对文章的分类。类别实体主要包括类别id、类别名字、博主名字。类别实体的e-r图如15所示。用户类别id类别名字博主名字图15文章类别实体e-r图(5)系统总体的e-r图系统总体e-r图说明了实体与实体之间的关系,实体用矩形表示,属性用椭圆表示,联系用菱形表示,如图16所示。管理员用户评论文章类别相册管理1n发表1n属于n发表1n创建1n1添加1n图16系统总体e-r图(二)数据库表的设计1. 用户信息表表1 userinfo表字段名数据类型字段含义是否为空注释usernamevarchar(20)用户名否主键passwordvarchar(20)用户密码否sexvarchar(8)性别否emailvarchar(20)邮箱否favoritevarchar(50)爱好是imagevarchar(50)头像是blogatitlevarchar(50)博客标题是bulletinvarchar(100)公告是 2. 文章信息表表2article表字段名数据类型字段含义是否为空注释aidint(4)文章编号否主键atitlevarchar(80)文章标题否cidint(4)类别编号否外键adatevarchar(20)发表日期否zhaiyaovarchar(300)文章摘要是acontentntext(16)文章内容否usernamevarchar(20)用户名否外键viewcountbigint(8)浏览次数否3. 分类信息表表3category表字段名数据类型字段含义是否为空注释cidint(4)类别编号否主键cnamevarchar(20)类别名称否usernamevarchar(20)用户名否外键4. 评论信息表表4comment表字段名数据类型字段含义是否为空注释idint(4)评论编号否主键authorvarchar(20)评论人名字否ccontentvarchar(50)评论内容否createdatevarchar(50)评论日期否aidint(4)文章编号否外键backcontentvarchar(50)回复内容是backdatevarcgar(50)回复日期是5. 管理员信息表表5admin表字段名数据类型字段含义是否为空注释idint(4)管理员编号否主键adminnamevarchar(20)管理员名称否adminpasswordvarchar(20)管理员密码否blogbulletinvarchar(80)网站公告是(三)数据表之间的关系图17 数据表之间的关系五、博客系统的详细设计(一)公共模块的详细设计1. 连接数据库的代码实现dbutil类:private static connection conn = null; /能够返回数据库的连接public static connection getconnection()try class.forname(com.microsoft.jdbc.sqlserver.sqlserverdriver);/获取数据库的jdbc驱动conn=drivermanager.getconnection(jdbc:microsoft:sqlserver:/loca lhost:1433;databasename=blogdb,sa,); catch (classnotfoundexception e) e.printstacktrace(); catch (sqlexception e) e.printstacktrace(); return conn;/关闭连接的静态方法public static void close(connection con)try if(con!=null)con.close(); catch (sqlexception e) e.printstacktrace();2. javabean的代码实现由于本系统中涉及的javabean比较多,所以只以category为例,说明javabean的代码实现。package cn.kfu.entity;public class category private string username; /博主的名字private int cid;/类别的idprivate string cname;/类别的名称public int getcid() return cid;public void setcid(int cid) this.cid = cid;public string getcname() return cname;public void setcname(string cname) ame = cname;public string getusername() return username;public void setusername(string username) this.username = username; 3. dao层的实现dao层是用于前台页面与后台数据库的交流,主要是用于查询数据用的,通常的方法有增,删,改,查。由于代码比较多,所以在此也以category为例,说明dao层的实现。由于篇幅的限制,只写了部分代码。public class categorydao private connection conn;private resultset rs;private preparedstatement pstm;public list findall()list l=new linkedlist();conn=dbutil.getconnection();string sql=select * from category;try pstm=conn.preparestatement(sql);rs=pstm.executequery();while(rs.next()category c=new category();c.setcid(rs.getint(cid);c.setcname(rs.getstring(cname);c.setusername(rs.getstring(username);l.add(c); catch (sqlexception e) e.printstacktrace();return l;(二)管理员的详细设计1. 管理员对用户管理的界面图18 管理员管理用户界面2 实现管理员对用户冻结的代码public void dopost(httpservletrequest request, httpservletresponse response)throws servletexception, ioexception response.setcontenttype(text/html;charset=gb2312);printwriter out = response.getwriter();request.setcharacterencoding(gb2312);response.setcharacterencoding(gb2312);string type=request.getparameter(type);string username=request.getparameter(username);userdao ud=new userdao();dongjiedao djd=new dongjiedao();if(delete.equals(type)if(ud.delete(username)response.sendredirect(/blog/admin/manageuser.jsp);elseout.print();out.println(alert(删除用户败!); else if(dongjie.equals(type)if(djd.insert(username)response.sendredirect(/blog/admin/manageuser.jsp);elseout.print();out.println(alert(冻结用户败!); else if(djd.delete(username)response.sendredirect(/blog/admin/manageuser.jsp);elseout.flush();out.close();3管理员实现在线用户统计的代码public class sessionlistener implements httpsessionbindinglistenerpublic static int number=0;public void valuebound(httpsessionbindingevent arg0) number=number+1; public void valueunbound(httpsessionbindingevent arg0) number=number-1; (三)博主的详细设计1. 普通用户的主界面图19 普通用户主界面2.博主的主界面图20 博主主界面2. 文章的管理 (1) 发表文章的界面图21发表文章界面(2)发表文章的代码: 标题: 类别: 请选择类别 % string username=(string)session.getattribute(username); category c=new category(); categorydao cdao=new categorydao(); list li=cdao.findallbyusername(username); iterator iterator=li.iterator(); while(iterator.hasnext() c=iterator.next(); % option value= 摘要: 内容: var ofckeditor = new fckeditor( acontent ) ;ofckeditor.basepath = fckeditor/ ;ofckeditor.toolbarset = default ;ofckeditor.width = 100% ;ofckeditor.height = 400 ;ofckeditor.value = ;ofckeditor.replacetextarea(); 返回列表 3. 分类的管理界面图22 分类管理界面管理分类的静态页面代码: 增加分类 序号 分类id 分类名称 修改和删除 % int i=0; categorydao cdao=new categorydao(); string username=(string)session.getattribute(username); list li=cdao.findallbyusername(username); iterator iterator=li.iterator(); while(iterator.hasnext() i=i+1; category c=iterator.next(); % a href=/blog/category/altercategory.jsp?cid=&cname=修改 a href=servlet/category_deleteservlet?cid= onclick=return confirm(你确定要删除吗?)删除 4. 相册管理的主界面图23 相册管理界面上传相片的servlet代码:request.setcharacterencoding(gb2312);response.setcharacterencoding(gb2312);printwriter out = response.getwriter();smartupload smartupload = new smartupload();smartupload.initialize(getservletconfig() , request,response);smartupload.setallowedfileslist(bmp,jpg,gif,psd); /设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, jsp,htm,html扩展名的文件和没有扩展名的文件。try smartupload.upload(); catch (smartuploadexception e1) e1.printstacktrace();/保存文file file = smartupload.getfiles().getfile(0);string filename=file.getfilename();string basepase=this.getservletcontext().getrealpath(/);try file.saveas(basepase+images/+filename); catch (smartuploadexception e) e.printstacktrace();stringusername=(string)request.getsession().getattribute(username);photo p=new photo();p.setphotoname(filename); p.setusername(username);photodao pdao=new photodao();boolean b=pdao.insertphoto(p);if(b!=false)out.println();out.println(+alert(上传图片成功!););out.print( window.location.href=/blog/photo/viewphoto.jsp); elseout.println();out.println(+alert(上传图片成功失败!););out.print( window.location.href=/blog/photo/user_upphoto.jsp);out.flush();out.close();六、博客项目系统开发中遇到的问题(一)jsp中出现的常见错误1. 方法调用的相关错误,如缺少符号、参数不对称、参数类型不对称等。比如说要获取一个整形的参数,用request中的getparameter()方法必须强制类型转换:int id=integer.parseint(request.getparameter(“id”);2. 汉字处理问题。jsp页面中文显示:在page中设置编码为gb2312(简体中文)。获取表单数据:改变编码方式。response.setcontenttype(text/html;charset=gb2312);request.setcharacterencoding(gb2312);response.setcharacterencoding(gb2312);3. jsp指令不正确、jsp指令没有正常结束、html标签没有正常结束等页面标签的错误。超链接4. 变量的相关错愕,如变量没有定义、变量未初始化、变量超过了数据库中定义变量的范围等。(二)servlet中出现的常见错误1. 执行jsp页面时发生500的错误;原因大多是jsp页面发生编译错误。2. 执行servlet发生404的错误。 大多提示是找不到路径的错误,很可能是web.xml配置中出错。 表单提交时action路径出错。 地址栏中的url出错。3. 执行servlet时发生500的错误;原因大多数为servlet中代码发生异常的错误。4. 执行servlet时,发生下载保存的提示: text/html;charset=gb2312 中间分号写成了逗号; web.xml中配置出错; 在servlet中跳转语句写成out.println(“”);也会提示下载保存。(三)其他常见错误1. 上传图片时,提示路径获取不到,一般是获取路径的方法不对;正确写法为string basepase=this.getservletcontext().getrealpath(/);2. 提示java.lang.nullpointerexception和java.sql.sqlexception,一般就是数据库的问题,或者dao层中连接数据库的方法的问题。3. 博文字数 多时不能就博文提交。必须
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抖音火花部门直播互动率KPI考核标准合同
- 网络交易担保补充协议
- 高端国际商标注册与全球业务拓展代理合同
- 电子产品性能质检补充合同
- 烘焙品牌加盟连锁与高品质原料配送协议
- 混凝土委托协议书
- 舞蹈房搬迁退款协议书
- 村干部拆迁协议书
- 抖音企业号KOL网红合作年度运营合同
- 私募基金投资总监聘用及全球资产配置合同
- 2025网站建设合同范本
- 《人体解剖生理学基础》课件
- 2025届福建省厦门市音乐学校生物七下期末学业质量监测试题含解析
- 托育培训课程课件
- 2024-2025西师大版一年级下册数学期末考试卷及参考答案
- 中国卒中学会急性缺血性卒中再灌注治疗指南(2024)解读
- 浙江开放大学2025年《社会保障学》形考任务2答案
- 【+初中语文++】++第11课《山地回忆》课件++统编版语文七年级下册
- 2025年高考历史考纲(完整版)
- 2025届东北三省四市教研联合体高三下学期高考模拟考试(一模)英语试题及答案
- 煤炭工业建筑结构设计标准
评论
0/150
提交评论