资源描述
此文档收集于网络,如有侵权请联系网站删除
博客管理系统
一.博客管理系统总体设计
系统需求:用户可以通过注册登陆进入博客管理系统发表博文,删除博文,查看博文,编辑博文,对博文评论和查看相册等
系统功能:浏览博文,编辑博文,删除博文,评论博文,用户登陆,用户注册,查看相册。
博客主页面
系统模块:博客主页面,用户注册登陆页面,博文浏览最终页面、发布博文模块、修改博文模块、删除博文模块,评论博文模块,个人信息设置,修改密码,浏览相册模块。
用户注册登陆页面
博文浏览最终页面
发布博文模块
博
客
管
理
系
统
修改博文模块
删除博文模块
评论博文模块
浏览相册
个人信息设置
修改密码
二.系统数据库设计(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
展开阅读全文