随着互联网的发展,博客在自由和共享的精神的影响下应运而生。博客的出现让我们有更多机会在日常生活中向他人展示自己的观点和信息。博客就是开放的私人空间。在互联网中,你可以尽情的发表自己的思想和言论。可以在网络上结交各式各样的人。
互联网在大家的方方面面都提供了极大的帮助。所以很明显的趋势就是网站的出现。个人博客系统为树立个人在网络上的形象提供了一个良好的平台。
JAVA作为目前最盛行的技术之一,J2EE(JAVA企业版本)十分适合于Web应用程序的设计和实现。此外,目前基于J2EE的开源框架在市场上久经考验,java社区也是十分活跃。本文的目的就是利用J2EE技术设计和实现个人博客系统。
关键词:个人博客系统;B/S结构;SpringMVC;Spring ;MyBatis
ABSTRACT
blog comes into being under the influence of the spirit of freedom and sharing. The advent of blogs gives us more opportunities to present our views and information to others in our daily lives. Blog is open private space. On the Internet, you can express your thoughts and opinions. You can make all kinds of people on the internet.
The Internet has provided great help in all aspects of our. So the obvious trend is the emergence of the site. Personal blog system provides a good platform for setting up the image of the individual on the network.
JAVA is currently the most popular technology, J2EE (JAVA enterprise version) is very suitable for the design and implementation of Web applications. In addition, the current open source framework based on J2EE has been tested on the market, Java community is also very active. The purpose of this paper is to use J2EE technology to design and implement personal blog system.
Key words: Personal Blog System;B / S structure;SpringMVC;Spring ;MyBati
目 录
第一章 绪论....................................... 1
第二章 相关技术介绍................................ 2
2.1 B/S 简介......................................... 2
2.2 JAVA 简介........................................ 2
2.3 JSP 简介......................................... 3
2.4 springMVC简介.................................... 3
第三章 可行性分析.................................. 4
3.1 技术可行性分析................................... 4
3.2 经济可行性分析................................... 4
3.3 操作可行性....................................... 4
3.4 法律可行性....................................... 4
第四章 系统设计.................................... 5
4.1 系统总流程....................................... 5
4.2 博主用例......................................... 6
4.3 游客用例......................................... 7
4.4 系统类........................................... 9
4.5 E-R图.......................................... 11
4.6 系统表设计...................................... 14
第五章 系统实现................................... 16
5.1 登录模块........................................ 16
5.1.1 博主登录...................................... 16
5.2 博客管理模块:.................................. 19
5.2.1 博客查询...................................... 19
5.2.2 博客新建...................................... 21
5.2.3 博客修改...................................... 23
5.2.4 博客删除...................................... 25
5.3 博客类别管理模块................................ 26
5.3.1 添加博客类别.................................. 26
5.3.2 修改博客类别.................................. 28
5.3.3 删除博客类别.................................. 30
5.3.4 显示博客类别.................................. 32
5.4 评论管理模块.................................... 34
5.4.1 审核评论...................................... 34
5.4.2 删除评论...................................... 36
第六章 系统测试................................... 38
6.1 前台模块测试.................................... 38
6.2 后台模块测试.................................... 38
个人博客是人们在网络上展现自己个性的一种方式。自从互联网走进千家万户,大受人们喜爱。大家都喜欢通过网络来获取各种各样的信息。而在网络上,你也可以畅所欲言,而个人博客也是其中一种。在个人博客上,你可以发表自己的心路旅程,发表自己的工作经验,发表技术博客等等。
首先介绍一下什么是博客,它也被称为网络日志。博客其实就是一个网页,它是由各种各样的帖子组成。这些帖子可以是你某一天观看电影的感慨,也可以是阅读到某篇书籍的读后感,更可以是你在自己技术领域的心得。它就是一个网页,但是大家可以在上面用文字或者图片分享自己的心情等,它提供的内容可以用来进行交流。
博客最开始的时候是论坛下的一个子系统。最早参与博客的都是一些信息技术的一些专家和学者,讨论的都是专业技能。直到发现了博客的商业价值,一些开放了自发式的博客,大家也都发现了博客分享和讨论的趣味。越来越多的人参与进来,博客也越来越风靡盛行。
博客与论坛有许多的相似之处,许多朋友都分不清他们两的区别。首先,论坛和博客都可以进行交友和交流等。而其中论坛注重的是集体讨论,博客注重的是个人分享。它们两者的核心点就有着很大的区别。论坛的创建的用户是基于为众人服务,而博客是为了博主服务。它们的不同点还有在形式上的不同。博客是独立存在的。而论坛并不是。总结起来,论坛是多人一起交流的地方,互动性强,社交性强。博客是发表个人文章的地方,虽然也可以交流,但更多的还是自娱自乐。
第二章 相关技术介绍
2.1 B/S 简介
软件系统体系结构分为两种,是客户机/服务器结构和浏览器/服务器结构。其中的浏览器/服务器结构就是B/S结构。
C/s模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的信息管理系统。
B/S模式:是浏览器/服务器(Browser/Server)模式,主要指的是web应用程序,就像电子商务网站,如淘宝,阿里巴巴等。相对于C/S模式的应用程序来说,B/S模式最大的优势在于客户端只要有浏览器就可以运行。而C/S模式的应用程序需要在客户端进行安装,而且升级也不太方便。而B/S模式的应用程序对于客户端来说,永远都是最新版本的。
2.2 JAVA 简介
Java的前身是Oak,sun公司在1995年申请注册商标的时候,发现已经Oak已经被注册了,最终才另外取了一个名字叫JAVA(其中还有一个趣味故事,有兴趣的可以去查找看看),
要使用Java首先要到官网甲骨文官网上下载Java的软件开发工具包,其中分为windows版本和Linux版本,我使用的是Windows的。而在Windows上要使用Java,要设置JAVA的环境变量。设置环境变量的步骤如下:第一步,点击计算机属性中的高级系统设置,点击系统属性高级的环境变量。第二步,设置一个系统变量为JAVA_HOME,其中的值是你的Java安装目录。它的作用还在于一些使用Java的工具时候需要用到这个变量,否则打不开,例如eclipse.第三步,设置一个classpath系统变量,它的作用是在你写Java源文件导包的时候去查找的类路径。第三步,在Windows自有的系统变量path中加入Java安装目录下的bin路径。既可以写成%JAVA_HOME%/bin;这就将Java的运行环境搭配好了。
介绍一下Java的文件目录。首先最重要的bin目录下面包含的是一些JDK包含的一些开发工具执行文件,例如像编译器javac.exe.运行Java的java.exe等等都在这个目录下面。其中Java启动的虚拟机在Java目录的jre目录中。
2.3 JSP 简介
Jsp是服务端技术,与微软的ASP一样,是一种动态网页的技术,不过jsp是使用Java语言技术开发的技术,jsp使用的时候会被jsp引擎解析成Servlet代码,而jsp虽然可以写Java代码,但是jsp主要的作用是为了展示视图,所以jsp+javabean 可以很好的解决代码混淆问题,然后将视图与逻辑分离。
2.4 SpringMVC简介
SpringMVC是一种现今十分流行的WEB框架,它的作用是使用了MVC思想设计模式对web层进行解耦。是用来接受请求和处理请求的。
SpringMVC处理请求的流程是如下:首先用户从浏览器中发送请求;之后它SpringMVC的核心组件DispacherServlet 前端控制器根据请求信息也即是url的信息来选择一个页面控制器进行处理;页面控制器接受得到委托之后,它首先会收集和绑定参数到某个对象中,然后调用业务对象进行业务逻辑代码处理,处理结束后返回ModelAndView。前端控制器根据视图的名字渲染相应的视图然后将响应传到前台去
第三章 可行性分析
3.1 技术可行性分析
本系统管理项目使用的是maven,数据库连接使用的是mybatis,数据库使用的是mysql,接受浏览器请求并处理的是使用springmvc,他们都是经过市场检验的,都已经十分成熟了,在安全性、可用性、可靠性等方面都是可以值得肯定的
3.2 经济可行性分析
本系统使用的技术框架都是开源框架,比如spring,springmvc,mybatis.而使用的数据库也是开源免费的mysql,使用的开发软件eclipse也是免费的,人员就本人一个也是免费的。所以在经济上消费很低,在经济可行性分析中是可以确定可行的。
3.3 操作可行性
个人博客系统开发结合个人需求而开发,能解决用户可以通过互联网来展现自己等诸多问题,因此该项目符合开发条件,具有成熟的基础,并且,从前面的分析来看,技术上的操作是十分成熟并且开源免费广为人们使用,从系统的操作上是可行的。
第四章 系统设计
4.1 系统总流程
图4-1 系统流程图
本个人博客系统分为两个角色,分别是博主和游客。只有博主才能登录后台管理系统,进行博客发表。
1.首先要通过用户名和密码登录后台管理系统,才能发布博客。
2.博主和游客都可以阅读博客。
3.博主和游客都可以发表评论。
4.经过博主的评论审核,评论才可以发布。
5.此时博主和游客才可以观看到评论。
4.2 博主用例
图4-2博主用例图
博主的功能简介:
1.登入功能
登入后台管理系统:首先进入登录页面,需要输入账号和密码。它会使用Shiro进行安全管理,对前台输入的密码进行加密运算,然后与数据库中的进行比较。成功后才能登入后台系统。
- 博客管理功能
博客管理功能分为写博客和博客信息管理。写博客是博主用来发表编写博客的,需要博客标题,然后选择博客类型,最后将博客内容填入百度的富文本编辑器中,点击发布博客按钮即可发布博客。
- 博客类别管理系统
博主类别管理系统可以添加,修改和删除博客类型名称和排序序号。将会显示到首页的按日志类别区域。游客可以从这里查找相关的感兴趣的博客内容。
4.评论管理功能
评论管理功能分为评论审核和评论信息管理两部分。评论审核是当有游客或自己发表了评论之后,博主需要在后台管理系统中审核评论。若想将此评论显示在页面上则点击审核通过,否则点击审核不通过。
5.个人信息管理功能
在这里可以修改博主的个人信息,可以修改昵称,个性签名,可以添加个人头像,修改个人简介。
6.系统管理功能
这里的功能有友情链接管理,修改密码,刷新系统缓存和安全退出。
友情链接管理可以添加,修改,删除友情链接网址。
4.3 游客用例
图4-3游客用例图
用例一 |
用例名称:查询博客 |
参与者:游客 |
主要流程:
|
用例二 |
用例名称:查看博客内容 |
参与者:游客 |
主要流程:
|
用例三 |
用例名称:查看博主个人信息 |
参与者:游客 |
主要流程:
|
用例四 |
用例名称:发表评论 |
参与者:游客 |
前置条件:首先要进入到博客内容页面 |
主要流程:
|
用例五 |
用例名称:查看友情链接 |
参与者:游客 |
主要流程:
|
4.4 系统类
图4-4博客类图
本系统主要功能和模块的JavaBean主要集中博客、博客类型、评论、友情链接这四个类。
一、博客类
1.功能
用于存储博主发表的博客的一些信息
2.属性
id; // 编号
title; // 博客标题
summary; // 摘要
leaseDate; // 发布日期
clickHit; // 查看次数
replyHit; // 回复次数
content; // 博客内容
contentNoTag; // 博客内容 无网页标签 Lucene分词用
blogType; // 博客类型
blogCount; // 博客数量 非博客实际属性,主要是 根据发布日期归档查询博客数量用
releaseDateStr; // 发布日期字符串 只取年和月 keyWord; // 关键字
3.方法
都是属性对应的setter,getter方法
二、博客类型类
1.功能:对博客进行分类,将博客分为几大类型
2.属性:
id; // 编号
userName; // 用户名
password; // 密码
nickName; // 昵称
sign; // 个性签名
proFile; // 个人简介
imageName; // 博主头像
3.方法:
对应的setter,getter方法
三,评论类:
1.功能:对博客评论数据保存。
2,。属性:
id; // 编号
userIp; // 用户IP
content; // 评论内容
blog; // 被评论的博客
commentDate; // 评论日期
state; // 审核状态 0 待审核 1 审核通过 2 审核未通过
3.方法:
对应的setter,getter方法
四.友情链接类
1.功能:可以保存页面上的友情链接网址。
2.属性:
id; // 编号
linkName; // 链接名称
linkUrl; // 链接地址
orderNo; // 排序序号 从小到大排序
3.方法:
对应的setter,getter方法。
发布日期 |
标题 |
博客 |
查看次数 |
摘要 |
关键字 |
博客内容 |
发布日期 |
博客类型 |
图4-5博客E-R图
博客类的关系模式如下(加下滑线的是主键):
博客(编号,博客标题,摘要,发布日期,查看次数,博客类型,关键字,博客内容)。
博主 |
用户名 |
个性签名 |
个人简介 |
博主头像 |
昵称 |
密码 |
图4-6博主E-R图
博主类的关系模式如下(加下滑线的是主键):
博主实体(编号,用户名,密码,昵称,个性签名,个人简介,博主头像)。
博客类型 |
博客类型名称 |
数量 |
排序 |
图4-7博客类型E-R图
博客类型类的关系模式如下(加下滑线的是主键):
博客类型实体(编号,博客类型名称,数量,排序)。
评论 |
用户IP |
评论内容 |
被评论的博客 |
评论日期 |
审核状态 |
友情链接 |
链接名称 |
链接地址 |
排序 |
4.6 系统表设计
系统总共有五张表,分别是博客表,博主表,博客类型表,评论表,友情链接表。如下所示:
表4-1 t_blog表
字段名 数据类型 允许非空 |
id int(11) no title varchar(200) yes summary varchar(400) yes releaseDate datetime yes clickHit int(11) yes replyHit int(11) yes content text yes typeId int(11) yes |
表4-2 t_blogger表
字段名 数据类型 允许非空 |
id int(11) no userName varchar(50) yes password varchar(100) yes profile text yes nickName varchar(50) yes sign varchar(100) yes imageName varchar(100) yes |
表4-3 t_blogtye表
字段名 数据类型 允许非空 |
id int(11) no typeName varchar(30) yes orderNo int(11) yes |
表4-4 t_comment表
字段名 数据类型 允许非空 |
id int(11) no userIp varchar(50) yes blogId int(11) yes content varchar(1000) yes commentDate datetime yes state int(11) yes |
表4-5 t_link表
字段名 数据类型 允许非空 |
id int(11) no linkName varchar(100) yes linkUrl varchar(200) yes orderNo int(11) yes |
第五章 系统实现
5.1 登录模块
5.1.1 博主登录
登入系统后台管理登录页面,博主首先输入用户名和密码,它回去调用Controller层代码,然后进入业务层调用数据库的一些操作确认是否用户名密码正确,然后返回到前台就会登进去。
登录首页模块主要代码:
JSP代码:
使用form表单提交到后台进行数据验证:
<form action="${pageContext.request.contextPath}/blogger/login.do" method="post" οnsubmit="return checkForm()">
<DIV style="width: 165px; height: 96px; position: absolute;">
<DIV class="tou">
</DIV>
<DIV class="initial_left_hand" id="left_hand">
</DIV>
<DIV class="initial_right_hand" id="right_hand">
</DIV>
</DIV>
<P style="padding: 30px 0px 10px; position: relative;">
<SPAN class="u_logo"></SPAN>
<INPUT id="userName" name="userName" class="ipt" type="text" placeholder="请输入用户名" value="${blogger.userName }">
</P>
<P style="position: relative;">
<SPAN class="p_logo"></SPAN>
<INPUT id="password" name="password" class="ipt" type="password" placeholder="请输入密码" value="${blogger.password }">
</P>
<DIV style="height: 50px; line-height: 50px; margin-top: 30px; border-top-color: rgb(231, 231, 231); border-top-width: 1px; border-top-style: solid;">
<P style="margin: 0px 35px 20px 45px;">
<SPAN style="float: left;"><a href="${pageContext.request.contextPath}/index.html">Java个人博客系统</a></SPAN>
<span><font color="red" id="error">${errorInfo }</font></span>
<SPAN style="float: right;">
<input type="submit" value="登录"/>
</SPAN>
</P>
</DIV>
</DIV>
</form>
使用javascrip对输入的博主用户名和密码进行校验,若用户名或密码为空,提示错误信息来提醒用户, 用户再去查找错误。
function checkForm(){
var userName=$("#userName").val();
var password=$("#password").val();
if(userName==null||userName==""){
$("#error").html("用户名不能为空!");
return false;
}
if(password==null||password==""){
$("#error").html("密码不能为空!");
return false;
}
return true;
}
java代码:使用MVC框架,对后台数据和前台form表单提交的数据进行交互
@Controller
@RequestMapping("/blogger")
public class BloggerController {
@Resource
private BloggerService bloggerService;
/**
* 用户登录
* @param blogger
* @param request
* @return
*/
@RequestMapping("/login")
public String login(Blogger blogger,HttpServletRequest request){
Subject subject=SecurityUtils.getSubject();
UsernamePasswordToken token=new UsernamePasswordToken(blogger.getUserName(), CryptographyUtil.md5(blogger.getPassword(), "java1234"));
try{
subject.login(token); // 登录验证
return "redirect:/admin/main.jsp";
}catch(Exception e){
e.printStackTrace();
request.setAttribute("blogger", blogger);
request.setAttribute("errorInfo", "用户名或密码错误!");
return "login";
}
5.2 博客管理模块:
博客管理管理模块为个人博客系统的用户(即博主)提供写博客和博客信息管理功能。在个人博客系统的首页上的博客就是从这里进行发布的。博客管理包含
新建:対博客的新建,博客可以含有图片,视频,音频附件。新建博客必须要有博客标题,博客类别自己选择所需要的博客类别,然后填入博客内容,最后发表文章。
搜索:在博客信息管理中,可以输入自己想要搜索的博客信息,系统会自动筛选出适合的博客展现给用户。
修改: 点击你想要修改的博客,系统会弹出修改博客页面,之后博客的标题,所属的博客类型,博客内容等都可以修改。
删除: 该系统支持单个删除和批量删除。
5.2.1 博客查询
图4-1查询博客时序图
步骤 | 系统行为描述 |
1 | 博客信息管理页面点查询按钮 |
2 | 页面表单提交调用控制层控制层的list方法 |
3 | 控制层list方法中调用服务层的list方法 |
4 | 服务层调用持久层list方法返回博客集合 |
按条件查询博客,调用控制层的list方法,在其中调用服务层list方法,返回 blog集合:List<Blog> list。获得集合后使用方法把查询到符要求的数据传到前台,在前台对数据进行处理。中心代码如下:
@RequestMapping("/list")
public String list(@RequestParam(value="page",required=false)String page,@RequestParam(value="rows",required=false)String rows,Blog s_blog,HttpServletResponse response)throws Exception{
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
Map<String,Object> map=new HashMap<String,Object>();
map.put("title", StringUtil.formatLike(s_blog.getTitle()));
map.put("start", pageBean.getStart());
map.put("size", pageBean.getPageSize());
List<Blog> blogList=blogService.list(map);
Long total=blogService.getTotal(map);
JSONObject result=new JSONObject();
JsonConfig jsonConfig=new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd"));
JSONArray jsonArray=JSONArray.fromObject(blogList,jsonConfig);
result.put("rows", jsonArray);
result.put("total", total);
ResponseUtil.write(response, result);
return null;
}
5.2.2 博客新建
图4-2 新建博客时序图
步骤 | 系统行为描述 |
1 | 博主在后台页面填写博客信息点击发布博客按钮 |
2 | Jsp表单提交调用控制层controller的save方法 |
3 | 控制层save方法中调用service层的add方法 |
4 | 调用blogMapper持久层保存博客信息 |
5 | 添加索引 |
点击写博客进入博客发布界面,填写博客内容信息,点击发布博客,提交到控制层的save方法,传入参数:Blog,该参数包含了该博客所有信息内容,在提交的时候使用javascript对博客的内容进行校验。校验成功后便会调用控制层的方法,在控制层的save()方法中调用服务层的add()方法,对该博客进行保存,持久到数据库中。部分代码如下
public String save(Blog blog,HttpServletResponse response)throws Exception{
int resultTotal=0; // 操作的记录条数
if(blog.getId()==null){
resultTotal=blogService.add(blog);
blogIndex.addIndex(blog); // 添加博客索引
}else{
resultTotal=blogService.update(blog);
blogIndex.updateIndex(blog); // 更新博客索引
}
JSONObject result=new JSONObject();
if(resultTotal>0){
result.put("success", true);
}else{
result.put("success", false);
}
ResponseUtil.write(response, result);
return null;}
5.2.3 博客修改
图4-3 修改博客时序图
步骤 | 系统行为描述 |
1 | 博主在博客信息管理页面选择需要修改的博客打开博客修改页面 |
2 | Jsp表单提交调用控制层controller的save方法 |
3 | 控制层save方法中调用service层的update方法 |
4 | 调用blogMapper持久层保存修改后的博客信息 |
5 | 更新索引 |
进入博客修改页面,修改博客内容信息,点击发布博客,提交到控制层的save方法,传入参数:Blog,该参数包含了修改后的博客所有信息内容,在提交的时候使用javascript对博客的内容进行校验。校验成功后便会调用控制层的方法,在控制层的save()方法中调用服务层的update()方法,对该博客进行保存,持久到数据库中。部分代码如下
@RequestMapping("/save")
public String save(Blog blog,HttpServletResponse response)throws Exception{
int resultTotal=0; // 操作的记录条数
if(blog.getId()==null){
resultTotal=blogService.add(blog);
blogIndex.addIndex(blog); // 添加博客索引
}else{
resultTotal=blogService.update(blog);
blogIndex.updateIndex(blog); // 更新博客索引
}
JSONObject result=new JSONObject();
if(resultTotal>0){
result.put("success", true);
}else{
result.put("success", false);
}
ResponseUtil.write(response, result);
return null;}
5.2.4 博客删除
图4-4 删除博客时序图
步骤 | 系统行为描述 |
1 | 博主在博客信息管理页面选择需要删除的博客(可以选择多条) |
2 | 调用控制层controller的delete方法 |
3 | 控制层delete方法中调用service层的delete方法 |
4 | 调用blogMapper持久层将对应的博客信息删除 |
5 | 删除对应博客的索引 |
在博客管理页面选择需要删除的博客,点击删除按钮,提交到控制层的delete方法,传入参数:需要删除博客的id,调用控制层的方法,在控制层的delete()方法中调用服务层的delete()方法,对该博客或多个博客进行删除,持久到数据库中。部分代码如下:
@RequestMapping("/delete")
public String delete(@RequestParam(value="ids")String ids,HttpServletResponse response)throws Exception{
String []idsStr=ids.split(",");
for(int i=0;i<idsStr.length;i++){
blogService.delete(Integer.parseInt(idsStr[i]));
blogIndex.deleteIndex(idsStr[i]); // 删除对应博客的索引
}
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(response, result);
return null;
}
5.3 博客类别管理模块
5.3.1 添加博客类别
图4-5 添加博客类型时序图
步骤 | 系统行为描述 |
1 | 博主在博客类别信息管理页面点击添加按钮打开添加博客类别弹窗 |
2 | 调用blogType控制层controller的save方法 |
3 | 控制层save方法中调用service层的add方法 |
4 | 调用blogTypeMapper持久层将对应的博客类别信息添加 |
5 | 返回成功添加信息 |
在博客类别管理页面打开添加博客类别弹窗,填写博客类别名称和排序,点击保存按钮,提交到控制层的save方法,传入参数:需要添加的博客类型blogType,调用控制层的方法,在控制层的save()方法中调用服务层的add()方法,添加博客类别的相关信息,持久到数据库中。部分代码如下:
@RequestMapping("/save")
public String save(BlogType blogType,HttpServletResponse response)throws Exception{
int resultTotal=0; // 操作的记录条数
if(blogType.getId()==null){
resultTotal=blogTypeService.add(blogType);
}else{
resultTotal=blogTypeService.update(blogType);
}
JSONObject result=new JSONObject();
if(resultTotal>0){
result.put("success", true);
}else{
result.put("success", false);
}
ResponseUtil.write(response, result);
return null;
}
5.3.2 修改博客类别
图4-6 修改博客类型时序图
步骤 | 系统行为描述 |
1 | 博主在博客类别信息管理页面选择要修改的博客类别点击修改按钮弹出弹窗 |
2 | 调用blogType控制层controller的save方法 |
3 | 控制层save方法中调用service层的update方法 |
4 | 调用blogTypeMapper持久层将对应的博客类别信息修改 |
5 | 返回成功系修改信息 |
在博客类别管理页面先选择要修改的数据,点击修改按钮,打开修改博客类别弹窗,填写修改后博客类别名称和排序,点击保存按钮,提交到控制层的save方法,传入参数:需要添加的博客类型blogType,调用控制层的方法,在控制层的save()方法中调用服务层的update()方法,修改博客类别的相关信息,持久到数据库中。部分代码如下:
@RequestMapping("/save")
public String save(BlogType blogType,HttpServletResponse response)throws Exception{
int resultTotal=0; // 操作的记录条数
if(blogType.getId()==null){
resultTotal=blogTypeService.add(blogType);
}else{
resultTotal=blogTypeService.update(blogType);
}
JSONObject result=new JSONObject();
if(resultTotal>0){
result.put("success", true);
}else{
result.put("success", false);
}
ResponseUtil.write(response, result);
return null;
}
5.3.3 删除博客类别
图4-7 删除博客类型时序图
步骤 | 系统行为描述 |
1 | 博主在博客类别信息管理页面勾选上要删除的博客类别,点击删除按钮 |
2 | 调用blogType控制层controller的delete方法 |
3 | 控制层delete方法中调用service层的delete方法 |
4 | 调用blogTypeMapper持久层将对应的博客类别信息删除 |
5 | 返回成功删除信息 |
在博客类别管理页面先勾选上要删除的数据,点击删除按钮,提交到控制层的delete方法,传入参数:需要删除的博客类型的id(可以是多个),调用控制层的方法,在控制层的delete()方法中调用服务层的delete()方法,删除博客类别的相关信息,持久到数据库中。部分代码如下:
/**
* 删除博客类别信息
* @param ids
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/delete")
public String delete(@RequestParam(value="ids")String ids,HttpServletResponse response)throws Exception{
String []idsStr=ids.split(",");
JSONObject result=new JSONObject();
for(int i=0;i<idsStr.length;i++){
if(blogService.getBlogByTypeId(Integer.parseInt(idsStr[i]))>0){
result.put("exist", "博客类别下有博客,不能删除!");
}else{
blogTypeService.delete(Integer.parseInt(idsStr[i]));
}
}
result.put("success", true);
ResponseUtil.write(response, result);
return null;
}
5.3.4 显示博客类别
图4-8显示博客类型时序图
步骤 | 系统行为描述 |
1 | 博主在后台系统打开博客类别信息管理页面就会调用查询方法 |
2 | 调用blogType控制层controller的list方法 |
3 | 控制层list方法中调用service层的list方法 |
4 | 调用blogTypeMapper持久层查询所有的博客类别信息 |
5 | 返回查询到的博客类别信息 |
在打开博客类别管理页面时,调用控制层的list方法,传入参数:当前页数和每页数量,调用控制层的方法,在控制层的list()方法中调用服务层的list()方法,从数据库中查询到博客类别信息,然后将博客类别的相关数据渲染页面上。部分代码如下:
@RequestMapping("/list")
public String list(@RequestParam(value="page",required=false)String page,@RequestParam(value="rows",required=false)String rows,HttpServletResponse response)throws Exception{
PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));
Map<String,Object> map=new HashMap<String,Object>();
map.put("start", pageBean.getStart());
map.put("size", pageBean.getPageSize());
List<BlogType> blogTypeList=blogTypeService.list(map);
Long total=blogTypeService.getTotal(map);
JSONObject result=new JSONObject();
JSONArray jsonArray=JSONArray.fromObject(blogTypeList);
result.put("rows", jsonArray);
result.put("total", total);
ResponseUtil.write(response, result);
return null;
}
5.4 评论管理模块
5.4.1 审核评论
图4-9审核评论时序图
博主在后台页面打开评论管理页面,选择需要审核的评论,点击审核通过按钮,调用controller层的review方法,controller层调用service层的update方法,将评论的状态字段改为对应的代表通过审核的1,如果点击不通过那就是2.然后调用dao层的update方法持久化到数据库中,相关的代码如下:
/**
* 评论审核
* @param comment
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/review")
public String review(@RequestParam(value="ids")String ids,@RequestParam(value="state")Integer state,HttpServletResponse response)throws Exception{
String []idsStr=ids.split(",");
for(int i=0;i<idsStr.length;i++){
Comment comment=new Comment();
comment.setState(state);
comment.setId(Integer.parseInt(idsStr[i]));
commentService.update(comment);
}
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(response, result);
return null;
}
5.4.2 删除评论
图4-10删除评论时序图
博主在后台打开评论管理页面,选择需要删除的评论,点击删除按钮。调用controller层的delete方法,在其中的方法中调用业务逻辑层的实现方法,然后调用dao层的方法,最后持久化到数据库中,相关的代码如下:
/**
* 删除评论信息
* @param ids
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/delete")
public String delete(@RequestParam(value="ids")String ids,HttpServletResponse response)throws Exception{
String []idsStr=ids.split(",");
for(int i=0;i<idsStr.length;i++){
commentService.delete(Integer.parseInt(idsStr[i]));
}
JSONObject result=new JSONObject();
result.put("success", true);
ResponseUtil.write(response, result);
return null;
}
第六章 系统测试
6.1 前台模块测试
浏览器的网址输入框中输入正确的地址既可以看到系统前台页面:
图5-1前台展示页面
6.2 后台模块测试
在前台首页可以点击登录后台按钮可以登录到后台管理页面,在后台管理页面可以进行博客管理,博客类别管理,评论审核和个人信息管理还有系统管理。但是首先要获取用户名和密码,拥有博主权限才可以进入到后台管理页面,首先输入用户名:admin,然后输入密码: 123。结果有两种,一种是密码正确成功登录,另外一种是不成功,登录失败,若是失败,则会在页面上打出红色字体:用户名或密码错误。
如下图所示:
图5-2后台登录页面
登录成功后,可以进入到后台管理页面,在这个页面,博主可以管理博客,可以新增博客,可以删除修改博客,也可以管理评论等等。
图5-2后台管理页面
测试写博客:
图5-3写博客页面
点击发布博客按钮,发布成功。
第七章 总结
经过了几个月的辛苦,个人博客系统基本完成。从最开始的束手无策,经过了老师和同学们的帮助下慢慢进入状态。历经了很多辛苦和难点,都一一针对性的去解决,一步一步脚踏实地慢慢对待,现在完成了项目设计,我在这个过程中学习到了很多,发现了自己在技术上的不足和缺点。我在项目设计中留下许多美好的回忆和感动。
首先,在选题上我的导师给予很大的帮助。还有在遇到难点的时候我的同学给予了我很多帮助。而在完成了项目设计后,我还感觉到了许多的不足之处。例如我的博客系统还可以添加许多功能,可以添加多用户之类的。所以在接下来的日子里,我需要更加努力的学习。
参考文献
[1]李洋. SSM框架在Web应用开发中的设计与实现[J]. 计算机技术与发展,2016,(12):190-194.
[2]蒋启明,彭小宁,张文. “轻量级Java EE”课程的Spring框架教学改革探讨[J]. 科教文汇(中旬刊),2016,(11):57-58.
[3]马杰川. 基于JSP的企业Blog系统的设计与实现[D].电子科技大学,2013.
[4]韦耿,钟亮. 基于JSP的个人博客系统[J]. 电脑知识与技术,2013,(21):4865-4869+4876.
[5]杨嘉群. 基于JSP的博客系统[J]. 电子制作,2013,(09):68-69+32.
[6]祁新安,李凯. 基于JSP的多媒体博客系统的研究[J]. 电脑开发与应用,2013,(04):33-35.
[7]尚云龙. 关于网络博客系统的设计与实现[D].电子科技大学,2013.
[8]邬心云. 日志式个人博客的自我呈现心理研究[D].华中科技大学,2012.
[9]何发胜. 基于SSH模式架构的博客系统的设计与实现[D].湖南大学,2012.
[10]崔程,张钦. 一种基于JSP技术的博客系统设计[J]. 安阳师范学院学报,2011,(05):93-95.
[11]郭向阳,李红娟. 基于JSP技术的都市博客系统的设计与实现[J]. 软件导刊,2010,(10):151-152.
个人博客系统设计与开发
摘 要:随着互联网的发展,博客在自由和共享的精神的影响下应运而生。博客的出现让我们有更多机会在日常生活中向他人展示自己的观点和信息。任何人都可以创建、发布和更新自己的个人网页。博客就是开放的私人空间,在互联网中,可以将个人生活琐事、思想感言、工作过程等及时的记录和发表,发挥个人的表达能力;还可以使用博客进行交友,进行深度交流。
关键词:个人博客系统;B/S;JSP
Abstract: With the development of Internet, blog comes into being under the influence of the spirit of freedom and sharing. The advent of blogs gives us more opportunities to present our views and information to others in our daily lives. Anyone can create, publish and update their own personal web pages. The blog is open to the private space in the Internet, can record personal chores, ideological reflections and working procedure of timely publication, and develop the ability to express personal; you can also use the blog to make friends, communicate deeply
Keyword: Personal blog system;B/S;JSP
0.前言
个人博客是人们在网络上展现自己个性的一种方式。随着网络在人们的生活中扮演着越来越重要的角色,大家都喜欢通过网络来获取各种各样的信息。而在网络上,你也可以畅所欲言,而个人博客也是其中一种。在个人博客上,你可以发表自己的心路旅程,发表自己的工作经验,发表技术博客等等。
首先介绍一下什么是博客,博客是一个音译词,它的英文名字为Blogger ,它也被称为网络日志。通常人们对于它的定义就是一种通常有个人管理、不定期发布文章的网站。
博客是一个网页,它是由各种各样的帖子组成。这些帖子可以是你某一天观看电影的感慨,也可以是阅读到某篇书籍的读后感,更可以是你在自己技术领域的心得。它就是一个网页,但是大家可以在上面用文字或者图片分享自己的心情等,它提供的内容可以用来进行交流。主要用途是个人自由表达和知识过滤和积累。
1、可行性分析
此个人博客系统采用的后台技术是使用Spring4+Springmvc+Mybatis3架构,采用mysql数据库,使用maven3管理项目,使用Shiro作为项目管理框架。前台网页使用主流的Bootstrap3 UI 框架;数据库连接池使用的是阿里巴巴的Druid;在线编辑器使用了百度的UEditor,支持单图和多图上传,支持截图长传,支持代码高亮等特性。这些技术都是经过市场检验的,都已经十分成熟了,在安全性、可用性、可靠性等方面都是可以值得肯定的
二、系统设计
根据需求分析,系统设计应该包含登录模块,博客管理模块,博客类别管理模块,评论管理模块,个人信息管理模块,系统模块。
三、系统功能实现
1)登陆界面
在登录按钮添加监听事件,在博主输入账号密码点击登录后,终端首先执行login()方法,此方法是根据用户在前台界面输入的用户名、密码来到数据查找是否有匹配的数据,若有则返回所匹配的对象,若没有则返回空,接下来则是校验验证码是否正确,若不正确则前台提示错误信息,若正确则继续判断从数据库查找后返回的对象是否为空,若为空则前台提示错误信息,若不为空则登录成功,界面跳转到主页。
图1 后台登录界面
2)管理员主界面
管理员界面,是将管理员的一些操作展现在主界面上,进行不同的页面跳转,进行业务转换,通过JDBC进行后台数据的操作,
- 总结
历时几个多月的紧张学习和工作,我的项目设计终于如期、顺利的完成了。
经过本次的项目设计,使我学习到了有关JSP的知识和MySQL数据库的知识,使我了解脚本语言对JSP的重要,及应用JSP的JDBC驱动程序调用数据库。在这次设计过程中,培养了我的自学能力,在遇到技术困难的时候,能够认真的对待,永不放弃,无论是查看各种书籍还是到图书馆中查找各种资料,想尽一切办法将这个问题解决。我总结了很多的JSP编程经验,这将在以后的学习生活中有很大的帮助。
我设计的个人博客系统,虽然界面有点粗糙,但技术含量还算高,例如:可以实现各种信息的管理和查询浏览,当然,由于时间短,加上自己是初学,所以本系统还存在不足,这些都需要在以后的学习过程中加以改进。
参考文献
[1]李洋. SSM框架在Web应用开发中的设计与实现[J]. 计算机技术与发展,2016,(12):190-194.
[2]蒋启明,彭小宁,张文. “轻量级Java EE”课程的Spring框架教学改革探讨[J]. 科教文汇(中旬刊),2016,(11):57-58.
[3]马杰川. 基于JSP的企业Blog系统的设计与实现[D].电子科技大学,2013.
[4]韦耿,钟亮. 基于JSP的个人博客系统[J]. 电脑知识与技术,2013,(21):4865-4869+4876.
参考资料:
基于jsp的个人博客系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)https://download.csdn.net/download/dwf1354046363/87813543Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502