分享
分享赚钱 收藏 举报 版权申诉 / 34

类型java web开发的个人博客系统.doc

  • 上传人:HR专家
  • 文档编号:5594342
  • 上传时间:2019-03-09
  • 格式:DOC
  • 页数:34
  • 大小:497.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    java web开发的个人博客系统.doc
    资源描述:

    1、数据库应用系统课程设计报告题 目: 博客系统 院系名称:信息科学与工程学院 专业班级: 软件 1302 学生姓名: 唐 林 学 号:201316920403 指导教师: 刘 於 勋 教师职称: 教授 2015 年 12 月2软件工程 专业课程设计任务书学生姓名 唐林 专业班级 软件 1302 学号 201316920403题 目 博客系统课题性质 其它 课题来源 自拟课题指导教师 刘於勋 同组姓名 无主要内容博客系统主要分为前台页面和后台页面,前台页面这要显示博文内容、分类、最近的评论、不同的主题等相关信息;后台页面主要是博主负责管理,主要有添加博文、管理博文、分类、评论管理、修改登录密码等相

    2、关功能。(1) 前台页面发表的博文,为游客提交评论;(2) 添加新的博文;(3) 管理博文分为:修改和删除博文;(4) 管理分类分为:添加新的分类和修改、删除分类;(5) 管理评论分为:修改评论和删除评论;(6) 修改登录密码;任务要求综合运用所学的数据库基本知识和 jsp 的相关知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。要求根据本课题设计出合理的数据结构,并实现博客首页显示各种分类和博客信息模块、后台登录模块、后台发表新博文模块、管理博文模块、新增分类模块、管理分类模块、管理评论模块、修改密码模块。参考文献数据库原理及应用 钱雪忠主编 北京邮电大学出版社 SQL serv

    3、er 2005 数据库 Bain T 著 中国电力出版社 JSP Web 编程指南朱红,司光亚 电子工业出版社数据库系统概论萨师煊,王珊.高等教育出版社JSP 工程应用与项目实践. 赛奎春. 机械工业出版社审查意见指导教师签字:教研室主任签字: 年 月 日 3信息科学与工程 学院课程设计成绩评价表课程名称:数据库应用系统课程设计设计题目:博客系统 专业: 软件工程 班级:1302 班 姓名:唐林 学号:201316920403序号 评审项目 分 数 满分标准说明1 内 容思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。任务饱满,做了大量的工作。

    4、2 创 新 内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解3 完整性、实用性 整体构思合理,理论依据充分,设计完整,实用性强4 数据准确、可靠 数据准确,公式推导正确5 规 范 性 设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定6 纪 律 性 能很好的遵守各项纪律,设计过程认真;7 答 辩 准备工作充分,回答问题有理论依据,基本概念清楚。主要问题回答简明准确。在规定的时间内作完报告。总 分综合意见指导教师 : 年 月 日1目 次第一章 21.绪论 .2第二章 32. 系统需求描述 .3第三章 53. 系统设计 .5第四章 84.具体实现 .8第五章 315.总

    5、结 .312第一章1.绪论在没有自己的博客之前,人们会经常进出于论坛发表贴子或者通过即时通信软件聊天,来表达自已的想法,可是这些都是零散的和杂乱的。博客的出现,让人们可以不断的把自己以前的和每天激发的一些想法或者感受整理放在自己的博客上,每次在写文章的时候,可能又会产生新的想法。虽然一些想法一些思考只是皮毛,没有什么深度,但是当下笔去写的时候每次都会对某个小小的问题有了更多的一点点思考,再写博客的时候就感觉到了一种满足感,一种想法得以释放思考得以延伸的满足感。生活中每天的一个小小的事情都会引起人们的思考,甚至是和朋友的聊天中一个小小的火花迸发。督促自己努力、把一时的想法变成观点,争取在生命中的

    6、每天里留下点什么,这也是人们写博客的目的之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己的每一天上留下了一道浅浅的思考和划痕。不仅如此,通过写博客、记录自己的想法可以帮助实现如下这些目的:(1)记录生活,在自己的每一天上留下思考的划痕。 (2)整理思路,固化知识,获得更多更好的想法。 (3)分享,将自己的想法、经验与人分享。 (4)交流、提高,通过交流产生更多的思维火花,相互提高。 (5)交友,互相鼓励,一路同行。 如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通;如果博客仅仅为了写日志,那么博客是一

    7、面镜子,镜子中展现的是真实的自己;如果博客是一个自由媒体,可以把自身感觉有价值的信息通过博客这个工具发布,与网友共享 3第二章2. 系统需求描述2.1. 系统功能分析系统功能模块包括两大块:管理界面功能模块和普通用户界面功能模块。其具体功能如下所示:*管理员功能:分类管理,文章管理,评论管理,链接管理,留言管理。*普通用户功能:阅读文章,留言,评论和在线聊天。*分类管理:文章类型的添加,修改,删除。*文章管理:文章的修改,删除。*评论管理:评论的删除。*链接管理:链接的添加和删除。*留言管理:留言的删除和回复。*管理员用户功能图如 图表 2-1 所示: 博 客 管 理 员个 人 信 息 管 理

    8、 日 志 管 理 评 论 管 理 留 言 管 理 分 类 管 理登陆 注册 修改个人信息 撰写日志 删除日志修改日志 删除评论回复评论 删除留言回复留言 添加分类 删除分类修改分类图表 0-1 管理员用户功能图2.2. 系统模块分析博客信息管理系统分为面向网络用户的前台及面向个人博客维护管理的后台,4依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。2.2.1. 博客注册登录管理模块博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管

    9、理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。该功能模块实现了以下几个子功能。a)新博客在线注册。b)博客登录管理。c)跳转到博客主页。只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。2.2.2. 博客及文章检索查询模块博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。该功能模块实现了以下几个子功能。a)热门博客页面推荐

    10、。b)最新博客日志推荐。c)日志信息关键字搜索。该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。2.2.3. 博客页面显示模块为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息 Error! Reference source not found.。当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表

    11、的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。该功能模块实现了如下几个子功能。a)用户可以分页查看对应的日志内容及评论信息。b)用户可以针对日志内容发表评论。c)用户可以针对博客进行留言。5d)用户可以分类查看日志内容。在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。2.2.4. 博客个人管理维护模块博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。该功能模块实现了如下几个子功能:a)日志及日志分类管理。b)评论及留言管理。c)个人基本信息维护管理

    12、。借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。第三章3. 系统设计3.1 数据库需求分析用户分为普通用户和管理员用户*管理员涉及类型管理、文章管理、添加文章、评论管理、链接管理、留言管理。*普通用户可以阅读文章、发表回应、留言、评论。一种文章类型有多篇文章。一篇文章有多篇评论、回复。对上面系统功能分析,设计如下数据项:*管理员信息:用户名、密码。*类型信息:类型编号、类型名称。*链接:链接编号、链接名称、链接地址。*留言:留言编号、留言人呢称、留言标题、个人主页、留言内容、留言时间、留言

    13、回复。*文章信息:文章序号、文章作者、文章标题、摘要、文章内容、文章发表日期、文章人气、回复、文章类型编号、文章类型名称、文章回复数。*评论:评论序号、评论用户呢称、评论标题、评论内容、评论时间、评论的文章序号。63.2 数据表设计Blog 表Category 表Comment 表Users 表78第四章4.具体实现4.1 系统页面4.1.1 登录界面94.1.2 发博文4.1.3 管理博文4.1.4 添加分类104.1.5 分类管理4.1.6 评论管理114.1.7 游客评论4.1.8 评论后124.2Jsp 页面博客系统唐林的博客“|“1/2 登录欢迎来到唐林的博客 分类全部 “最近的主题

    14、14“ 最近的评论“ 博客分类管理分类编号分类名显示顺序操作15“import url(“/blog/admin/css/screen.css“); function del()var msg=“你真的确定要删除吗?“;if(confirm(msg)=true)return true;elsereturn false ;评论管理页面16window.onload=function()var oFCKeditor=new FCKeditor(“content“) ;oFCKeditor.BasePath=“/blog/admin/fckeditor/“ ;oFCKeditor.ToolbarSe

    15、t=“Default“ ; oFCKeditor.Width=750 ;oFCKeditor.Height=350 ;oFCKeditor.ReplaceTextarea() ;请您修改您的博文内容“ /主题:“ /17类别:“ selected“内容: 修改评论内容“/18评论人:“/内容:唐林的博客19“+message+“) ; %用户登录用户名:密码:4.3 处理的 servletpackage com.tanglin.blog;import java.io.IOException;import java.sql.SQLException;20import java.util.List

    16、;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanListHandler;public class HomeServlet extends HttpServlet private st

    17、atic final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(“UTF-8“) ;String method=request.getParameter(“method“) ;if(method=null)main(request,response) ;request.getRequestDispatch

    18、er(“/main.jsp“).forward(request, response);else if(method.equals(“get“)main(request,response) ;get(request,response) ;request.getRequestDispatcher(“/displayBlog.jsp“).forward(request,response);public void get(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExcepti

    19、on String id = request.getParameter(“id“);String sql = “select id,title,content,created_time as createdTime from blog where id=“+id;QueryRunner qr=DbHelper.getQueryRunner() ;Blog blog =null ;try List list = (List) qr.query(sql, new BeanListHandler(Blog.class);blog = (Blog) list.get(0); catch (SQLExc

    20、eption e) e.printStackTrace();List commentList=null ;sql=“select id,username,content,createdTime from comment where blog_id=“+id+“order by id desc“ ;try commentList=(List)qr.query(sql, new BeanListHandler(Comment.class); catch (SQLException e) e.printStackTrace();request.setAttribute(“blog“, blog);

    21、/ 将信息传出request.setAttribute(“commentList“, commentList) ;21public void main(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String cid=request.getParameter(“cid“) ;String sql=null ;if(cid=null)sql = “select top 4 b.id as id,title,content,created_time as

    22、createdtime,c.id as categoryid,name as category from blog b,category c where category_id=c.id order by b.id desc“ ;elsesql = “select top 4 b.id as id,title,content,created_time as createdtime,c.id as categoryid,name as category from blog b,category c where category_id=c.id and category_id=“+cid+“ or

    23、der by b.id desc“ ;/ DButil 中核心类,生成对象时传递数据源对象QueryRunner qr = DbHelper.getQueryRunner();/查询最新博文List blogs = null;try blogs = (List) qr.query(sql, new BeanListHandler(Blog.class); catch (SQLException e) e.printStackTrace(); /查询分类sql = “select id,name from category order by level desc,id desc“;List ca

    24、tegorys = null;try categorys = (List) qr.query(sql,new BeanListHandler(Category.class); catch (SQLException e) e.printStackTrace();/查询最新评论sql = “select top 3 id,username,content,blog_id as blogid from comment order by id desc“;List comments = null;try comments = (List) qr.query(sql, new BeanListHand

    25、ler(Comment.class); catch (SQLException e) e.printStackTrace();/ 读取的博文类容request.setAttribute(“blogs“,blogs);22/ 读取分类信息request.setAttribute(“categorys“, categorys);/ 读取评论信息request.setAttribute(“comments“, comments);package com.tanglin.blog;import java.io.IOException;import java.sql.SQLException;impor

    26、t javax.naming.Context;import javax.naming.InitialContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import javax.sql.DataSource;import mo

    27、ns.dbutils.QueryRunner;public class AddBlogServlet extends HttpServlet private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request, response);public void doPost(HttpServletRequest reque

    28、st, HttpServletResponse response)throws ServletException, IOException / 解決从 JSP 页面接收的中文参数乱码request.setCharacterEncoding(“UTF-8“);HttpSession session = request.getSession() ;User user=(User)session.getAttribute(“user“) ;if(user=null)response.sendRedirect(“/blog/admin/login.jsp“) ;else/ 接收 JSP 页面传过来的与

    29、博文相关的 3 个参数: 主题,内容,分类编号。String title = request.getParameter(“title“);String content = request.getParameter(“content“);23String categoryId = request.getParameter(“category“);/数据源对象管理者DataSource ds = null;try /获取数据源对象,通过 context.xml 文件Context context = new InitialContext();ds = (DataSource) context.lo

    30、okup(“java:/comp/env/jdbc/sqlserverds“); catch (Exception e) System.out.println(“块获取数据源出错“);int result = 0;try /添加博文的 sql 语句String sql = “insert into blog (title,content,category_id,created_time) values (?,?,?,getdate() )“;/为 sql 语句中的?设置参数String params = title, content, categoryId ;/DButil 中核心类,生成对象

    31、时传递数据源对象QueryRunner qr = new QueryRunner(ds);/调用它的 update,完成 sql 的运行result = qr.update(sql, params); catch (SQLException e) e.printStackTrace();String message = “;if (result = 1) message = “添加成功!“; else message = “添加失败!“;request.setAttribute(“message“, message); / 将信息传出request.getRequestDispatcher(“

    32、/admin/result.jsp“).forward(request,response);package com.tanglin.blog;import java.io.IOException;import java.sql.SQLException;import java.util.List;import javax.servlet.ServletException;24import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.Ht

    33、tpServletResponse;import javax.servlet.http.HttpSession;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanListHandler;public class UserServlet extends HttpServlet private static final long serialVersionUID = -3214143438951060004L;public void doGet(HttpServletRequest request, HttpServl

    34、etResponse response)throws ServletException, IOException doPost(request,response) ;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String method=request.getParameter(“method“) ;if(method=null)method=“ ;if(method.equals(“login“)login(re

    35、quest,response) ;else if(method.equals(“logout“)logout(request,response) ;else if(method.equals(“change“)changePassword(request,response) ;public void login(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.setCharacterEncoding(“UTF-8“) ;String use

    36、rname = request.getParameter(“username“) ;String password = request.getParameter(“password“) ;String sql = “select id,username,password from users where username=? and password=?“ ;QueryRunner qr=DbHelper.getQueryRunner() ;String params=username,password ;User user=null ;List list=null ;try list=(Li

    37、st)qr.query(sql,params,new BeanListHandler(User.class); catch (SQLException e) e.printStackTrace();if(list.size()0)25user=(User)list.get(0) ;HttpSession session=request.getSession() ;session.setAttribute(“user“, user) ;request.getRequestDispatcher(“/admin/admin.jsp“).forward(request, response) ;else

    38、request.setAttribute(“message“, “用户名或者密码不正确!“) ;request.getRequestDispatcher(“/admin/login.jsp“).forward(request, response) ;public void logout(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session=request.getSession() ;session.invalidate()

    39、 ;response.sendRedirect(“/blog“) ;public void changePassword(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String oldPassword=request.getParameter(“oldPassword“) ;String newPassword=request.getParameter(“newPassword“) ;String reNewPassword=request.getP

    40、arameter(“reNewPassword“) ;HttpSession session=request.getSession() ;User user=(User)session.getAttribute(“user“) ;if(!user.getPassword().equals(oldPassword)request.setAttribute(“message“, “你输入的原密码不正确!“) ;request.getRequestDispatcher(“/admin/result.jsp“).forward(request, response) ;else if(newPasswo

    41、rd.equals(reNewPassword)String sql=“update users set password=? where id=?“ ;String params=newPassword,user.getId().toString() ;QueryRunner qr = DbHelper.getQueryRunner() ;try qr.update(sql,params) ; catch (SQLException e) e.printStackTrace();response.sendRedirect(“/blog/admin/admin.jsp“) ;elsereque

    42、st.setAttribute(“message“, “你两次输入的新密码不一致!“) ;request.getRequestDispatcher(“/admin/result.jsp“).forward(request, response) ;package com.tanglin.blog;26import java.io.IOException;import java.sql.SQLException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServ

    43、let;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import mons.dbutils.QueryRunner;import mons.dbutils.handlers.BeanListHandler;public class AdminBlogListServlet extends HttpServlet private static final long serialVers

    44、ionUID = 1L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session = request.getSession();User user = (User) session.getAttribute(“user“);if (user = null) response.sendRedirect(“/blog/admin/login.jsp“); else QueryRunner qr

    45、= DbHelper.getQueryRunner();String sql = “select b.id as id,title,content,created_time as createdTime, c.name as category from blog b,category c where b.category_id=c.id order by id desc“;List list = null;try list = (List) qr.query(sql, new BeanListHandler(Blog.class); catch (SQLException e) e.print

    46、StackTrace();request.setAttribute(“list“, list); / 将信息传出request.getRequestDispatcher(“/admin/adminblogList.jsp“).forward(request, response);package com.tanglin.blog;import java.io.IOException;import java.sql.SQLException;import java.util.List;27import javax.naming.Context;import javax.naming.Initial

    47、Context;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import javax.sql.DataSource;import mons.dbutils.QueryRunner;import mons.dbutils.handler

    48、s.BeanListHandler;public class PreEditBlogServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session = request.getSession() ;User user=(User)session.getAttribute(“user“) ;if(user=null)response.sendRedirect(“/blog/admin/login.jsp“) ;elseString id = request.getParameter(“id“);QueryRunner qr =DbHelper.getQueryRunner() ;/ 添加博文的 sql 语句String sql = “select id,title,content,category_id as categoryid from blog where

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:java web开发的个人博客系统.doc
    链接地址:https://www.docduoduo.com/p-5594342.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开