基于SpringBoot的个人博客系统——LW模板

摘 要

博客目前在网络中主要通过三种方式进行流传:第一种是人与人之间的交流方式,人们通过网络博客进行日常的互动交际,发展属于自己的另一种人脉;第二种是以每个单独的个体为中心进行知识信息的汇合管理以及信息的收录,以点汇面,达到知识以及信息共享的形势;第三种方式是以个体为主导的传播出版。
在当前的网络时代,博客正逐渐的走入到大众的视野中,开始成为年轻人的新的相处方式、新的互动方式、新的工作方式。随着使用的人越来越多,普及的面越来越广,受众群体逐渐的开始影响到身边人,改变了传统的网络思想和社会结构,他让交流变得更加便捷和具有方向,使人们单一的思想和集体的智慧有了碰撞的可能。博客,正在逐渐的改变着当下的社会。
目标是打造一个不同于传统网络平台的新兴博客管理系统,更好的适应当下的网络环境,给予大众更好的博客体验,受众可以更好的通过此平台去学习交流、工作沟通,让人们的生活变得更加的轻松自由。系统的需求要从用户以及管理员的角度去考虑他们的实际情况出发。

关键词:交流方式;网络时代;博客;新兴博客管理系统;信息共享

Abstract

At present, blog is spread in the network mainly through three ways: the first is the way of communication between people, people through the network blog for daily interaction communication, the development of their own another kind of contacts; The second one is the convergence management of knowledge and information and the collection of information based on each individual, so as to achieve the situation of knowledge and information sharing. The third way is individual-led dissemination and publishing.

In the current network era, blog is gradually into the public’s vision, began to become a new way for young people to get along, a new way of interaction and a new way of work. As more and more people use it and its popularity is more and more widespread, the audience gradually begins to influence people around them, changing the traditional network thinking and social structure, making communication more convenient and oriented, and making it possible for people’s single thought and collective wisdom to collide. Blog, is gradually changing the current society.

The goal is to create a new blog management system different from the traditional network platform, better adapt to the current network environment, give the public a better blog experience, the audience can better through this platform to learn communication, work communication, so that people’s life becomes more relaxed and free. The requirements of the system should be based on the actual situation of users and administrators.

Key words

Communication mode; Network age; Blogs; Emerging blog management system; Information sharing

目录

第一章 绪 论 1
1.1 项目背景 1
1.2 项目现状 1
1.3 项目目标以及意义 2
第二章 需求分析和设计 3
2.1需求分析 3
2.2系统的功能模块划分 3
2.3数据库设计 4
第三章 系统功能实现 8
3.1系统管理模块 8
3.2系统用户模块 14
3.3系统游客模块 16
第四章 核心代码 18
4.1 用户注册代码如下: 18
4.2 用户登录代码如下: 19
4.3博客信息展示代码如下: 19
4.4 缓存Key的生成策略代码如下: 20
4.5 管理员权限下的查询所有博客的代码如下: 21
第五章 总结和展望 22
致 谢 23

第1章 绪 论

1.1 项目背景
博客,仅音译,英文名为Blogger,为Web Log的混成词。它的正式名称为网络日记;又音译为部落格或部落阁等,是使用特定的软件,在网络上出版、发表和张贴个人文章的人,或者是一种通常由个人管理、不定期张贴新的文章的网站。博客上的文章通常以网页形式出现,并根据张贴时间,以倒序排列。许多博客专注在特定的课题上提供评论或新闻,其他则被作为个人性的日记。一个典型的博客结合了文字、图像、其他博客或网站的链接及其它与主题相关的媒体,能够让读者以互动的方式留下意见,是许多博客的重要要素。大部分的博客内容以文字为主,但仍有一些博客专注在艺术、摄影、视频、音乐、播客等各种主题。 [1]
博客目前在网络中主要通过三种方式进行流传:第一种是人与人之间的交流方式,人们通过网络博客进行日常的互动交际,发展属于自己的另一种人脉;第二种是以每个单独的个体为中心进行知识信息的汇合管理以及信息的收录,以点汇面,达到知识以及信息共享的形势;第三种方式是以个体为主导的传播出版。
1.2 项目现状
在当前的网络时代,博客正逐渐的走入到大众的视野中,开始成为年轻人的新的相处方式、新的互动方式、新的工作方式。随着使用的人越来越多,普及的面越来越广,受众群体逐渐的开始影响到身边人,改变了传统的网络思想和社会结构,他让交流变得更加便捷和具有方向,使人们单一的思想和集体的智慧有了碰撞的可能。博客,正在逐渐的改变着当下的社会。
通过网络的平台传播着更多的信息,博客由于简单便捷的原因更适合当下的趋势,那么一款更具有个体特色、更加具有创新意义、更全功能性的博客平台就有了发展的潜力。

1.3 项目目标以及意义
该项目的目标是打造一个不同于传统网络平台的新兴博客管理系统,更好的适应当下的网络环境,给予大众更好的博客体验,受众可以更好的通过此平台去学习交流、工作沟通,让人们的生活变得更加的轻松自由。

第2章 需求分析和设计

2.1需求分析

系统的需求要从用户以及管理员的角度去考虑他们的实际情况出发,从不断的调研和材料中了解到当前的系统需要满足以下几点:
2.1.1用户功能需求:
(1)系统要求用户必须输入正确的用户名和密码 才能进入系统。
(2)系统应该有博客的基本信息管理功能。
(3)系统内的博客应该有分类和上传博客的时间轴功能,方便查询。
(4)系统需要对用户有基本信息管理功能。
(5)系统应该对用户留言有展示功能。
2.1.2 管理员功能需求
(1)系统应该对管理员权限开放管理用户的功能。
(2)系统管理员应该可以对所有的博客有统一管理的权限。
(3)系统管理员应该可以对所有的留言进行统一的管理。
(4)系统的管理员可以对菜单功能进行适当的修改。

2.2系统的功能模块划分
通过对用户的需求分析以及各项工作的调研,主要对该系统分为俩大类:管理员和一般用户。模块主要为:首页、博客文章、分类标签、用户信息、评论留言管理、时间轴、友联管理以及日志管理。在系统中管理员具有最高权限,可以对系统中所有的信息进行超限管理,对别的用户发布的博客、留言以及评论进行删除操作,对各类菜单进行调整。
(1)首页
首页是登录之后看见的第一个页面,用户可以对该页面进行点缀达到吸引游客的目的,该页面可以是喜欢的图片、视频或者音乐,也可以是用户自己写的博客。总之,首页是一个展览的区域,用户需要在该页面填充亮眼的信息去吸引人们的眼球。
(2)博客
博客功能就是该系统的主要功能,在该页面下用户可以肆意的挥毫泼墨,抒写自己的情感和想法。文学小文章、技术大科普、个人思绪亦或者是旅行游记,都可以通过这个模块编辑然后发布出去,让更多人的人看到作者的分享。音乐、视频或者图片也可以成为这个板块的主角,丰富的素材和各种元素都能在这个板块得到展示。
(3)分类
分类这个功能主要是服务于博客的,在这个页面主要是对博客进行划分区域,将各色的博客进行分门别类,然后用户可以对博客文章有全局的考量,在观看博客以及编写博客时都有很清楚的思绪,知道自己当下需要什么以及从哪里可以找到自己想要的东西。
(4)标签
标签模块是在博客内容里面添加类似“书签” 的东西,让用户可以在观看博客的时候对博客内容进行标记,便于以后可以找到该博客,快速定位。
(5)用户
用户管理属于管理员权限下的功能模块。管理员可以在该模块下面对系统的用户信息进行统一的管理,包括了新增、修改以及删除查询。
(6)评论
评论模块是在博客文章功能的一个衍生功能。他是游客在观看完博客之后与作者交流的一种方式,表达出自己对博客文章的看法和心得,而作者也能在博客下面跟读者互动,充分的达到最初互动的目的。
(7)留言
留言模块主要是游客与博主之间进行互动的主流方式。系统里面有留言板的板块,人们可以去往自己喜欢的博主页面,在他们各自的留言板上写下自己内心的独白,从而博主会看到对应的信息,然后回复他们。
(8)时间轴
时间轴模块主要是对用户注册之后发布博客文章的记录。通过时间轴的方式记录了博主成长的过程,人们可以很直观的看到不同时期的博主处于不同的状态,很直观的感受岁月的杀猪刀。
(9)友链
友链的功能主要是博文插入的友情链接。主要是对一些友情链接的管理,博主可以在博客以及平台挂出一些知识延伸的链接方式,便于游客用户更好的理解博文内容。
(10)日志
日志功能在系统中起到了一个记录的作用,主要是对用户访问系统的时间、IP以及进行的操作进行记录,这样在以后系统出现问题可以有一个追根溯源的地方,相当于“黑匣子”的功能。

第三章 系统功能实现

3.1系统管理模块
系统管理模块主要是分为标签管理、博客管理、操作日志管理、分类管理、留言管理、评论管理、时间轴管理、首页管理、用户管理以及友情链接管理。
3.1.1 首页管理
首页是通过登录之后进入系统看到的页面,可以在首页设置音频、视频以及图片文字等多元素的素材来让用户有眼前一亮的感觉。主要是可以对各种风格的首页模式进行定制化的选择来达到系统风格与用户的性格或者博文内容统一的目的。例如有复古风格、古风侠韵的,有清新婉约、可爱脱俗的,有博闻强识、增强见识的等等,不同类型的博文系统可以用不同的风格去装饰首页,那么游客和用户在登录之后之后就会更快地融入到环境里面,阅览博文就会更好的跟博主产生共鸣。

3.1.2 博客管理
博客管理功能是管理员在博主管理博文的基础上更大权限的管理博文,在该系统内的所有博文,都能进行统一的管理。该功能下可以对所有博客进行标题、分类查询,定位到目标博客,展示页面对博文的标题、类型、状态以及更新时间进行多维度的统计,从而可以对该博文进行修改或者删除的操作,便于维护系统的健康数据安全,防止传播一些非法信息和传销信息,促进了网络和谐。

3.1.3 分类管理

分类管理是对于博文类型的分门别类。博客在各色用户的发表下会逐渐的越来越多,类型也会越来越多,那么通过各种类型对博客进行分类,系统内的博客就不会变的冗杂繁乱,在查询的时候就可以井井有条。条理清晰的查询方式也会让观看者有很好的系统体验感,便于系统在更多人之间的传播。

3.1.4 标签管理
标签功能是博客里面书签标记,用户在博客里面的浏览过程中做出实时的标记。在管理员权限下可以对所有的标签进行查询、修改以及删除,便于维护博客的信息健康和合理性的数据。

3.1.5 用户管理
用户管理就是属于系统的后台管理功能,在管理员权限下可以查询到系统的所有用户信息,也可以对用户账号基础信息进行修改或者删除用户,又或者改变用户的账号状态来维护系统的使用者合理合法,防止一些不良分子靠着该系统去进行非法的行为。

3.1.6评论管理
评论管理指管理员权限下对系统内所有博客的游客评论进行统一管理的功能。由于博客的基数很大,那么其评论也会更多,这时候需要一个页面对所有的评论进行统一的管理,可以对一些游客的不合时宜、不符实际、违反社会法律、违反社会道德的言辞进行删除。

3.1.7 留言管理
留言模块主要是游客与博主之间进行互动的主流方式。系统里面有留言板的板块,人们可以去往自己喜欢的博主页面,在他们各自的留言板上写下自己内心的独白,从而博主会看到对应的信息,然后回复他们。

3.1.8 时间轴管理
时间轴模块主要是对用户注册之后发布博客文章的记录。通过时间轴的方式记录了博主成长的过程,人们可以很直观的看到不同时期的博主处于不同的状态,很直观的感受岁月的杀猪刀。

3.1.9 友链管理
友链的功能主要是博文插入的友情链接。主要是对一些友情链接的管理,博主可以在博客以及平台挂出一些知识延伸的链接方式,便于游客用户更好的理解博文内容。

3.1.10 日志管理
日志功能在系统中起到了一个记录的作用,主要是对用户访问系统的时间、IP以及进行的操作进行记录,这样在以后系统出现问题可以有一个追根溯源的地方,相当于“黑匣子”的功能。

3.2系统用户模块
系统用户模块是指系统用户在登录之后可以操作的功能,主要分为留言、评论、编辑博客以及修改个人信息等
3.2.1 编辑博客
用户可以在平台上编辑博客,在该页面下用户可以肆意的挥毫泼墨,抒写自己的情感和想法。文学小文章、技术大科普、个人思绪亦或者是旅行游记,都可以通过这个模块编辑然后发布出去,让更多人的人看到作者的分享。音乐、视频或者图片也可以成为这个板块的主角,丰富的素材和各种元素都能在这个板块得到展示。

3.2.2 留言功能
留言功能是用户之间交流的方式之一,在别人的博客下面留言交流可以在陌生人之间建立起沟通的桥梁,一来一回的语言辞藻就是拉进彼此距离的钥匙,方便了当下年轻人之间的沟通。

3.2.3 评论功能
评论是游客在观看完博客之后与作者交流的一种方式,表达出自己对博客文章的看法和心得,而作者也能在博客下面跟读者互动,充分的达到最初互动的目的。

3.2.4 个人信息
个人信息功能是指用户在登录系统之后显示的基础信息,用户也可以修改当初注册的基础信息,可以修改自己的昵称、头像等。

3.3系统游客模块
游客功能是在用户注册系统信息之前的功能。在用户注册信息之前或者没有登录系统的时候浏览当前系统就会用游客的身份进入系统,观看当前系统内的一些公开博客以及公告等信息,但是不能对博客进行评论和留言,只有浏览的权限。那么游客也可以在系统中进行注册,获取相应的权限。

3.3.1 注册功能
注册主要就是在系统中添加一名用户,填上相应的个人基础信息之后就可以获取到对应的账号信息,之后就能以用户的身份登录系统,从而获取到写博客、留言以及评论的权限了。

3.3.2 登录功能
登录功能是进入系统的关键。用户需要填写正确的用户名、密码以及验证码之后进入系统。为了方便用户,该功能还采取了记忆密码的功能,这样用户就不用每次登录系统都要填写密码信息了,极大的提升了用户体验感。

第四章 核心代码

4.1 用户注册代码如下:
@ResponseBody
@RequestMapping(“/register”)
public Map register(UserInfo userInfo, HttpServletRequest request) {
//用于存储返回响应的信息
Map map = new HashMap<> ();
userInfo.setCreateTime (new Date ());
//默认头像
userInfo.setHeadPortrait (“/upload/default.jpg”);
userInfo.setStatus (true);
userInfo.setUpdateTime (new Date ());

boolean register = userService.register (userInfo);
if (register) {
   // String message = "你好," + userInfo.getNickname () + "! 点击激活";
    // SendEmailUtil.sendMessage (userInfo.getEmail (),  message);
    map.put ("flag", true);
} else {
    map.put ("flag", false);
    map.put ("reg_error", "邮箱已存在");
}

return map;

}

4.2 用户登录代码如下:
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {

UserInfo userInfo = userInfoMapper.selectByEmail (email);

List list = new ArrayList<> ();
List roles = userInfo.getRoles ();
for (Role role : roles) {
    list.add (new SimpleGrantedAuthority (role.getName ()));
}
userInfo.setAuthorities (list);


return userInfo;

}

@RequestMapping(“/getCode”)
public void getCode(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//定义图形验证码的长、宽、验证码字符数、干扰线宽度
ShearCaptcha captcha = CaptchaUtil.createShearCaptcha (200, 100, 4, 0);

    // 获取验证码
    String code = captcha.getCode ();

// System.out.println (code);

    //存储到Session中
    HttpSession session = req.getSession ();
    session.setAttribute ("code",code);

    //把验证码图片放到响应的字节流中
    captcha.write (resp.getOutputStream ());
}

4.3博客信息展示代码如下:
//查询所有博客
public List selectAll(Integer pageNum, Integer pageSize, String title, Integer typeId, Boolean recommend) {
title = “%” + title + “%”;

PageHelper.startPage (pageNum, pageSize);
return blogMapper.selectAll (title, typeId, recommend);

}

@Cacheable
@Override
//分页查询博客
public PageInfo selectAll(Integer pageNum, Integer pageSize) {

PageHelper.startPage (pageNum, pageSize);
List blogs = blogMapper.selectAllFront ();
PageInfo pageInfo = new PageInfo<> (blogs, 5);
return pageInfo;

}

@Cacheable
@Override
//通过ID查询博客信息
public Blog selectById(Long id) {
return blogMapper.selectById (id);
}

4.4 缓存Key的生成策略代码如下:
//自定义缓存Key的生成策略
@Bean(“myKeyGenerator”)
public KeyGenerator keyGenerator() {
return new KeyGenerator () {
@Override
public Object generate(Object target, Method method, Object… params) {
// This will generate a unique key of the class name, the method name
//and all method parameters appended.
StringBuilder sb = new StringBuilder ();
sb.append (target.getClass ().getName ());
sb.append (method.getName ());
for (Object obj : params) {
sb.append (obj.toString ());
}
logger.info (“keyGenerator=” + sb.toString ());
return sb.toString ();
}
};
}

4.5 管理员权限下的查询所有博客的代码如下:
@RequestMapping(“/showAll”)
public ModelAndView showAll(@RequestParam(name = “pageNum”, required = false, defaultValue = “1”) Integer pageNum,
@RequestParam(name = “pageSize”, required = false, defaultValue = “5”) Integer pageSize,
@RequestParam(name = “title”, required = false, defaultValue = “”) String title,
@RequestParam(name = “typeId”, required = false, defaultValue = “0”) Integer typeId,
@RequestParam(name = “recommend”, required = false, defaultValue = “false”) Boolean recommend) {
if (recommend == false) {
recommend = null;
}

ModelAndView mv = new ModelAndView ();

//展示所有博客前查询所有类别
List types = typeService.selectAll ();
mv.addObject ("types", types);

//调用业务层方法
List blogs = blogService.selectAll (pageNum, pageSize, title, typeId, recommend);
PageInfo pageInfo = new PageInfo<> (blogs, 5);

mv.addObject ("pageInfo", pageInfo);
mv.addObject ("title", title);
mv.addObject ("typeId", typeId);
mv.addObject ("recommend", recommend);

mv.setViewName ("admin/blogs");
return mv;

}

第五章总结和展望

经过几个月的努力,基于java的个人博客管理系统终于是完成了。期间查询了很多的相关资料和信息,按照软件工程的要求和需求分析,完成了对各个系统功能模块的开发,基本上达到了毕设的要求。
在本次的毕业设计中,对自己的专业水平有很大的提升作用。了解了项目的开发从最初的需求分析到项目完成这一系列的过程是多么的不容易,提供了自己理论和实践相结合的机会。在这次系统的开发过程中我受到了很多的启发:在系统的设计过程要多考虑实际因素和现实环境,不能自己闭门造车;在设计数据库的过程中需要集思广益的结合多人的思想来补充各个指标的字段属性,还有每个字段的类型以及位数要求;在系统的模块设定过程中,还要考虑用户体验感和医院的操作便利性能以及合理性,这就需要我们在细节上要精益求精了。理论终究是书上写死的知识,只有在实践中才能长出更好的花朵,碰撞出更好的花火,所以此次的宠物医院信息管理系统的开发是一次很完美的理论与实践的结合,既加深了对理论知识的理解,也从实践中验证了理论的知识,充实了自我。
感谢同学们的帮助、指导老师的用心辅导让此次个人博客管理系统的开发顺利完成,但是由于本人的能力还不够优秀所以该系统还存在着一些不完美的地方,恳请各位老师斧正。

致 谢

本文是在导师的悉心指导下完成的。导师在论文选题、研究内容和研究思路的制定,以及论文的编写等方面都倾注了大量的心血。刘老师为人谦虚、学识渊博、治学严谨,对学生循循善诱,这些都让我终生难忘。并且在做毕业设计期间,是老师给了我很多锻炼的机会,引导我在学术研究和工作方面一步一步的成长,使我的能力和素质得到了长足的提升,为我在以后的工作学习过程打下了坚实的基础,在此,向刘老师表示衷心的感谢和深深的敬意!
在课题研究期间,还得到了学院领导、各位老师和同学对本人的帮助和支持,在此表示衷心的谢意。

你可能感兴趣的:(论文模板,论文笔记)