实现博客管理系统复习课程.docx
《实现博客管理系统复习课程.docx》由会员分享,可在线阅读,更多相关《实现博客管理系统复习课程.docx(20页珍藏版)》请在咨信网上搜索。
此文档收集于网络,如有侵权请联系网站删除 博客管理系统 一.博客管理系统总体设计 系统需求:用户可以通过注册登陆进入博客管理系统发表博文,删除博文,查看博文,编辑博文,对博文评论和查看相册等 系统功能:浏览博文,编辑博文,删除博文,评论博文,用户登陆,用户注册,查看相册。 博客主页面 系统模块:博客主页面,用户注册登陆页面,博文浏览最终页面、发布博文模块、修改博文模块、删除博文模块,评论博文模块,个人信息设置,修改密码,浏览相册模块。 用户注册登陆页面 博文浏览最终页面 发布博文模块 博 客 管 理 系 统 修改博文模块 删除博文模块 评论博文模块 浏览相册 个人信息设置 修改密码 二.系统数据库设计(Mysql) 数据库需求分析:用户通过注册、登录博客主页面来发表博文、浏览博文、评论博文以及查询已经发表的博文。 确定数据库需要的表以及数据对象: 用户数据表:用户主键、用户名、密码 用户详细信息表:用户详细信息主键和外键、真实姓名、性别、年龄、邮件、qq号码、用户头像 博客文章表:文章主键、文章发布者 、文章标题、文章内容、发布日期、点击次数 文章评论表:文章评论主键、外键、评论人、评论内容、评论日期 数据表设计: 四个表,为用户数据表、用户详细信息表、博客文章表和文章评论表。 用户数据表: 列名 数据类型 是否为空 说明 Userid INT 否 用户主键 loginId VARCHAR(50) 否 用户名 loginPwd NVARCHAR(50 否 用户密码 用户详细信息表: 列名 数据类型 是否为空 说明 userid Int 否 用户详细信息主键和外键 trueName VARCHAR(20) 否 真实姓名 gender VARCHAR(20) 否 性别 age int 否 年龄 mail VARCHAR(20) 否 邮箱 Qq VARCHAR(20) 否 Qq号码 headerimg VARCHAR(50) 否 用户头像 博客文章表: 列名 数据类型 是否为空 说明 articleId INT 否 文章主键 authorId INT 否 文章发布者 title VARCHAR(50) 否 文章标题 contents TEXT 否 文章内容 pubDate DATETIME 否 发布日期 clicks INT 否 点击次数 文章评论表: 列名 数据类型 是否为空 说明 commentId INT 否 文章评论主键 articleId INT 否 外键 userid INT 否 评论人 comment TEXT 否 评论内容 commentPubDate DATETIME 否 评论日期 三.系统基本框架: Header.html Maintitle.jsp Addarticle.jsp Articledetail.jsp Articledetail1.jsp Articlelist.jsp Articlemanagerlist.jsp Changepwd.jsp Delarticle.jsp Doaddarticle.jsp Dochangepwd.jsp Doeditarticle.jsp Doreview.jsp Dosetinfo.jsp Editarticle.jsp Message.jsp Otheruserdetail.jsp Photo.jsp Register.jsp Setinfo.jsp Doregister.jsp Intro.jsp Dologin.jsp Login.jsp Loginout.jsp Bloguser.jsp Footer.jsp 四.系统主要代码 1.层叠样式表css 2.用户登录注册系统代码 (1).Login.jsp(用户登录) (2).Register.jsp(用户注册) (3).Dologin.jsp(检测登录是否正确) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="com.myblog3.biz.UserInfoBiz"%> <%@page import="com.myblog3.entity.UserInfoEntity"%> <% request.setCharacterEncoding("UTF-8"); String loginId = request.getParameter("loginId"); String loginPwd = request.getParameter("loginPwd"); String remember = request.getParameter("rad"); if (loginId.trim().equals("")) { out.print("用户名不能为空!"); } else if (loginPwd.trim().equals("")) { out.print("密码不能为空!"); } else { UserInfoBiz biz = new UserInfoBiz(); UserInfoEntity entity = new UserInfoEntity(); entity.setLoginId(loginId); entity.setLoginPwd(loginPwd); UserInfoEntity temp = biz.loginUserInfo(entity); if (temp == null) { out.print("用户名不存在!请注册后再登录!<br>"); out.print("<a href='index.jsp'>重新登录</a><br>"); out.print("<a href='register.jsp'>注册</a>"); } else { if (!loginPwd.equals(temp.getLoginPwd())) { out.print("密码错误!<br>"); out.print("<a href='index.jsp'>重新登录</a>"); }else if(loginId.equals(temp.getLoginId())&&loginPwd.equals(temp.getLoginPwd())) { if (remember.equals("yes")) { Cookie cookie = new Cookie("curr_userinfo", temp.getLoginId()); cookie.setMaxAge(60 * 30); response.addCookie(cookie);} session.setAttribute("curr_userin", temp); response.sendRedirect(request.getContextPath()+ "/index.jsp");}}}%> (4).Doregister.jsp(检测注册是否正确) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="com.myblog3.biz.*"%> <%@page import="com.myblog3.entity.*"%> <%@page import="mon.*"%> <% request.setCharacterEncoding("UTF-8"); String loginId=request.getParameter("loginId"); String loginPwd=request.getParameter("loginPwd"); String confirmloginPwd=request.getParameter("confirmloginPwd"); if(loginId.trim().equals("")){ out.print("用户名不能为空!<br><a href='register.jsp'>请重试</a>"); }else if(loginPwd.trim().equals("")){ out.print("用户密码不能为空!<br><a href='register.jsp'>请重试</a>"); }else if(!loginPwd.trim().equals(confirmloginPwd.trim())){ out.print("确认密码和密码输入不一致!<br><a href='register.jsp'>请重试</a>"); }else{ UserInfoBiz biz=new UserInfoBiz(); UserInfoEntity entity=new UserInfoEntity(); entity.setLoginId(loginId); entity.setLoginPwd(loginPwd); AddUserInfoResult result=biz.addUserInfo(entity); switch(result){ case fail: out.print("注册失败!"); out.print("<a href='register.jsp'>重新注册</a>");break; case existsUser: out.print("用户名已被占用!请输入其他用户名<a href=register.jsp>注册<a/>"); break; case success: { out.print("注册成功!<a href='index.jsp'>点击这里进行登录</a><br>"); UserInfoEntity temp1=biz.getMaxUserId(); int userid=temp1.getUserId(); String trueName=temp1.getLoginId(); String gender="男"; String age="0"; String mail=null; String qq=null; UserDetailEntity temp=new UserDetailEntity(); temp.setUserid(userid); temp.setTrueName(trueName); temp.setGender(gender); temp.setAge(Integer.parseInt(age)); temp.setMail(mail); temp.setQq(qq); UserDetailBiz tempbiz=new UserDetailBiz(); AddUserDetailResult result1=tempbiz.addUserDetail(temp); switch(result1){ case successes: out.print("用户详细信息添加成功!<br>"); out.print("<a href='index.jsp'>返回主页</a><br>"); out.print("<a href='setinfo.jsp'>重新添加<a/>");break; case fails: out.print("用户详细信息添加失败!<br>"); out.print("<a href='setinfo.jsp'>重新添加<a/>"); break; case noexistsUser: out.print("用户注册未成功!<br>");break; }}break;}}%> (5).Setinfo.jsp(用户详细信息注册) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="com.myblog3.entity.UserInfoEntity"%> <%@page import="com.myblog3.dao.UserInfoDao"%> <%@page import="com.myblog3.dao.UserDetailDao"%> <%@page import="com.myblog3.entity.UserDetailEntity"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>用户详细信息注册</title> <link href="CSS/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <%@include file="header.html" %> <%@include file="maintitle.jsp" %> <table width="900" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="680" valign="top"><table width="680" border="0" cellpadding="0" cellspacing="1" bgcolor="#dddddd"> <tr> <td height="350" align="center" bgcolor="#fcfcfc"><table width="500" border="0" cellpadding="0" cellspacing="0"> <tr> <td><table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="10"><img src="images/topleft.gif" width="10" height="28" /></td> <td width="480" bgcolor="#ddddcc">注册新用户</td> <td width="10"><img src="images/topright.gif" width="10" height="28" /></td> </tr> </table></td></tr> <tr> <td><table width="500" border="0" cellspacing="0" cellpadding="0"> <tr><td width="1" bgcolor="#ddddcc"></td> <td width="498" height="250" align="center"><form id="form2" name="form2" method="post" action="dosetinfo.jsp"> <% UserDetailDao dao2=new UserDetailDao(); UserInfoEntity tempEntity=(UserInfoEntity)session.getAttribute("curr_userin"); if(tempEntity==null){ out.print("您还未登录!或服务器已超时!请先<a href='index.jsp'>登录<a/>"); }else{ UserDetailEntity entity2=dao2.getUserDetailByUserId(tempEntity.getUserId()); %> <table width="250" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="100" height="30" align="right">真实姓名:</td> <td><input name="trueName" type="text" class="inputTextW110H22" value="<%=entity2.getTrueName() %>"/></td </tr> <tr> <td height="30" align="right">性别:</td> <td><label> <input type="radio" name="gender" value="男" <%if(entity2.getGender().equals("男")){ %>checked="checked"<%}%>/> 男 <input type="radio" name="gender" value="女" <%if(entity2.getGender().equals("女")){ %>checked="checked"<%} %>/> 女 </label></td></tr> <tr> <td height="30" align="right">年龄:</td> <td><input name="age" type="text" class="inputTextW110H22" value="<%=entity2.getAge() %>"/></td> </tr> <tr> <td height="30" align="right">Email:</td> <td><input name="mail" type="text" class="inputTextW110H22" value="<%=entity2.getMail() %>"/></td> </tr> <tr><td height="30" align="right">QQ:</td> <td><input name="qq" type="text" class="inputTextW110H22" value="<%=entity2.getQq() %>"/></td></tr> <tr> <td height="30" colspan="2" align="center"><label> <input type="image" name="imageField2" src="images/finish.jpg" /> </label></td> </tr> </table><%} %> </form></td> <td width="1" bgcolor="#ddddcc"> </td> </tr> </table></td> </tr> <tr> <td height="5" bgcolor="#ddddcc"></td> </tr></table></td> </tr></table></td> <td> </td> <td width="200" valign="top"> <%@include file="intro.jsp" %> <%@include file="blogUser.jsp" %> </td></tr></table> <%@include file="footer.jsp" %> </body> </html> (6).Dosetinfo.jsp(检测用户信息修改成功与否) (7).Changepwd.jsp(修改密码) (8).Dochangepwd.jsp(检测修改密码操作是否有效) 3.博客用户代码 (1)Bloguser.jsp 4. Intro.jsp代码(个人资料) 5.主页图片页面代码 (2)Header.html 6.导航栏页面 Maintitle.jsp 7.博文相关页面 (1)Addarticle.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>发表博文</title> <link href="CSS/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --><script type="text/javascript"> function check(){ var articleTitle = document.getElementById("articleTitle").value; var articleContent = document.getElementById("articleContent").value; if(articleTitle==""){ alert("文章标题不能为空"); return false;} if(articleContent.length==0){ alert("文章内容不能为空"); return false;}} </script></head> <body> <%@include file="header.html" %> <%@include file="maintitle.jsp" %> <table width="900" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="680" valign="top"><table width="680" border="0" cellpadding="0" cellspacing="1" bgcolor="#dddddd"> <tr> <td align="center" bgcolor="#fcfcfc"><table width="650" border="0" cellspacing="0" cellpadding="0"> <tr><td height="30" align="left">发表博文</td> </tr><tr> <td height="1" align="left" bgcolor="#dddddd"> </td></tr><tr> <td align="left"> </td> </tr><tr> <td height="30" align="left"> <form id="form2" name="form2" method="post" action="doAddarticle.jsp" onsubmit="return check()"> <table width="600" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="100" height="30" align="right">博文标题:</td> <td><input name="articleTitle" id="articleTitle" type="text" class="inputTextW480" /></td> </tr> <tr> <td align="right">博文内容:</td> <td><label> <textarea name="articleContent" id="articleContent" rows="20" class="inputTextW480"></textarea> </label></td> </tr><tr> <td height="30" colspan="2" align="center"><label> <input type="image" name="imageField2" src="images/publish.jpg" /> </label></td> </tr> </table> </form> </td> </tr> </table></td> </tr></table></td> <td> </td> <td width="200" valign="top"> <%@include file="intro.jsp" %> <%@include file="blogUser.jsp" %> </td> </tr> </table> <%@include file="footer.jsp" %> </body> </html> (2).Articledetail.jsp (博文详细信息) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="com.myblog3.dao.ArticleDao"%> <%@page import="com.myblog3.entity.ArticleEntity"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>博文详细信息</title> <link href="CSS/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <%@include file="header.html" %> <%@include file="maintitle.jsp" %> <table width="900" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="680" valign="top"><table width="680" border="0" cellpadding="0" cellspacing="1" bgcolor="#dddddd"> <tr> <td align="center" bgcolor="#fcfcfc"><table width="650" border="0" cellspacing="0" cellpadding="10"> <tr> <td height="30" align="left"> <% request.setCharacterEncoding("UTF-8"); String articleId=request.getParameter("articleId"); ArticleDao dao=new ArticleDao(); List<ArticleEntity> list=dao.getArticleinfoByArticleid(Integer.parseInt(articleId)); if(list!=null){ for(int i=0;i<list.size();i++){ %> <table width="600" border="0" align="center" cellpadding="5" cellspacing="0"> <tr> <td width="100" height="30" align="right" bgcolor="#EFEFEF">博文标题:</td> <td><%=list.get(i).getTitle() %></td> </tr> <tr> <td align="right" bgcolor="#EFEFEF">博文内容:</td> <td class="content"><%=list.get(i).getContents() %> </td> </tr> <tr> <td height="30" align="right" bgcolor="#EFEFEF">发布日期:</td> <td><%=list.get(i).g- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 博客 管理 系统 复习 课程
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文