一、Java多人博客系统-开篇
作为一个程序员,工作之外的不断学习是必须的。这个项目是我个人课外学习和练手的项目。最开始是一个个人网站。当时发现京东云可以免费部署网站的,就立即写了一个网站,当时就使用jsp技术,可以实现发布博客、评论博客、留言基本功能,首页展示了个人信息。数据库使用MySQL。通过git上传代码,部署成功后,在朋友中反响不错,访问和评论人很多。但是过了半年,京东云要收费了,我这个个人网站也就关停了。
但是这个项目我一直保留了下来,并且不断进行完善,不断加入新的技术。先后使用了Spring MVC、Hibernate,以及其他EasyUI、ECharts等前端框架,后面又加入了ElasticSearch作为全文检索功能。还自己写了爬虫,可以抓取网上感兴趣的文章,保存到自己的博客中。功能越来越强大,也越来越完善,细节处理越来越好。一是想将该项目作为自己学习新技术的地方,学习到的新技术,在这个项目上实验下,新的想法,在这个项目上实现。既能学新知识,又能锻炼思维。二是想某个时候能将该项目应用到实际工作中,个人觉得技术公司应该有自己的博客的,一个部门建立一个博客,每个人有想法都可以去写一写,这不仅是对自己知识的总结,也是公司技术的积累,对新来的员工有极大的指导作用。希望有公司能够使用自己的博客系统。再者也是算对开源做出贡献吧,虽然各种开源项目很多,该项目写得也不是非常好,但是也算是可以作为其他人参考学习的材料吧。
该博客系统将一直增加新的功能、新的技术,并长期作为自己的练习项目。
截止2017年05月07号,项目进展如下:
项目暂且命名为:EasyBlog,意为简单的博客系统。代码写得简单,界面也简单吧。想法也来源使用了EasyUI,所以博客也带Easy。
主要技术:Spring MVC、Hibernate、Maven、EasyUI、Echarts、ElasticSearch、爬虫、MySQL
开发工具:Ubuntu、Eclipse、git
主要功能:
1、首页博客的分页显示,博客分类,文章归类显示;
2、用户可以评论、推荐博客;
3、实现关键词搜索文章功能,可以实现标题和文章内容关键词搜索;
4、后台对博客、博客类别、用户评论的管理,使用kindeditor编辑器实现写博客功能;
5、使用ECharts作为统计图展现时间段发表博客数量,可以展示每天、每月、每年的博客发表数量;
6、自己写了爬虫,爬取其他网站信息加入到自己的博客中。通过博客网站登录,可以设置关键词,后台自动进行抓取。
由此项目也引申了另外两个开源项目:爬虫和Echarts封装。爬虫主要功能是根据关键词爬取感兴趣的文章,加入到自己的博客中。目前仅支持抓取博客园,因为每个网站页面结构是不同,需要对特定网站结构进行分析,抓取特定结构中的信息。后续再不断的进行完善,实现能够导入不同网站结构,实现对不同网站进行抓取。Echarts封装,是抽象了百度的Echarts,使得能够少写代码即可实现图形展示。
项目中还写了Hibernate助手类、ElasticSearch助手类,可以拿出来直接使用。尤其是ElasticSearch助手类,网上比较好的助手类还比较少,尤其是高版本的(本项目中使用ElasticSearch5)。该助手类中实现了对索引的增删改查功能,提供多种搜索方法,可以实现and、or搜索,语法高亮等。使用方便快捷。
爬虫源代码:https://github.com/leanfish2011/Crawler
Echarts封装源代码:https://github.com/leanfish2011/MyEcharts
后续将围绕这个博客系统写一系列的文章,介绍项目的完成过程,欢迎大家指导!
一. 前台效果展示
1. 博客主页显示

2. 博客内容显示

3. 全文检索

二. 后台效果展示
1. 登录

2. 后台主页

3. 写博客功能

4. 博客管理

5. 添加博客类别等等

三. 爬虫

一、Java多人博客系统-开篇的更多相关文章
- 四、Java多人博客系统-2.0版本
由于时间关系,多人博客系统这里穿插一个2.0版本. 2.0版本本来是打算用于建立个人网站,但是后来发现个人建站需要购买域名服务器,还需要备案,很繁琐.最终放弃.完成此版本,最终也只是作为技术演练.此版 ...
- 三、Java多人博客系统-技术架构
多人博客系统1.0版本,架构和技术还是很简单和很传统的. 1.技术 前端:jsp.html.css.javascript.jquery.easyui.echarts 后端:spring mvc.Hib ...
- 二、Java多人博客系统-演变
任何项目都是由小到大,逐步演变的.自己写的这个博客系统也不例外. 更新日志如下: 一.2014年底-2015年初 功能及技术: 1.定位为个人网站,介绍自己情况和发布文章等. 2.首页模块有:个人简介 ...
- 七、Java多人博客系统-2.0版本-docker部署
docker是当下很热门的技术,是对之前的部署系统方式的彻底改变.之前部署系统,需要安装数据库.初始化数据库,安装jdk,配置jdk,部署应用程序,修改配置文件等,很繁琐.一般现场运维人员很难搞定,现 ...
- 五、Java多人博客系统-2.0版本-数据库设计
数据库设计表如下:文章类别表.文章表.评论表.留言表. 文章列表表:存放文章类别,首页菜单生成也是从这个表取的. 文章表:存放文章标题.发表时间.内容等信息. 评论表:文章评论内容. 留言表:用户发表 ...
- 六、Java多人博客系统-2.0版本-代码实现
1.前后端分离,后端使用spring boot,只负责提供数据,对外暴露Restful API.前端使用vue,只负责展示数据和向后台提交数据. 2.数据库使用mariadb,存储所有数据. 3.前端 ...
- 【完全开源】Django多人博客系统——支持MarkDown和tinyMce
目录 说明 功能 如何使用 说明 这是一个用Django开发的多人博客系统,功能简单,但完全满足公司内部或个人的博客使用需求.支持普通富文本编辑器(tinyMCE)和MarkDown编辑器 由于嫌弃D ...
- Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!
大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下: star数量 ...
- 推荐一款自研的Java版开源博客系统OneBlog
OneBlog 一款超好用的Java版开源博客 Introduction 简介 OneBlog 一个简洁美观.功能强大并且自适应的Java博客.使用springboot开发,前端使用Boot ...
随机推荐
- logistic回归和最大熵
回顾发现,李航的<统计学习方法>有些章节还没看完,为了记录,特意再水一文. 0 - logistic分布 如<统计学习方法>书上,设X是连续随机变量,X服从logistic分布 ...
- NLog配置分享
新建一个文件命名为NLog.Config,然后添加如下代码 <?xml version="1.0" encoding="utf-8" ?> < ...
- MySQL表结构变更,不可不知的Metadata Lock
在线上进行DDL操作时,相对于其可能带来的系统负载,其实,我们最担心的还是MDL其可能导致的阻塞问题. 一旦DDL操作因获取不到MDL被阻塞,后续其它针对该表的其它操作都会被阻塞.典型如下,如阻塞稍久 ...
- WPF仿网易云音乐系列(三、播放进度条+控制按钮)
一.简介 上一篇,咱们基本把左侧导航栏给搞定,这一篇文章,开始来做一下播放进度条和控制按钮:老规矩,咱们先来看一下原版的效果: 首先,它这个专辑图片,有一个按钮效果,鼠标移入会显示出伸缩箭头:移出后消 ...
- DSL 系列(1) - 扩展点的论述与实现
前言 DSL 全称为 domain-specific language(领域特定语言),本系列应当会很长,其中包含些许不成熟的想法,欢迎私信指正. 1. DSL 简述 我理解的 DSL 的主要职能是 ...
- 使用 OpenSSL 创建私有 CA:3 用户证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...
- POJ 2406 Power Strings(KMP)
Description Given two strings a and b we define a*b to be their concatenation. For example, if a = & ...
- Linux下php安装redis扩展(redis已经安装)
1. 下载需要的php操作redis的扩展包 (1).切换到 cd /usr/local/src (2). wget https://github.com/nicolasff/phpredis ...
- Day6 Pyhton基础之文件操作(五)
能调用方法的一定是对象 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 #-*-codeing-*-:UTF-8 #author:Weina Pang # ...
- Python_内置函数之round的幺蛾子
pycharm运行结果 1 ret = round(0.5) print(ret) >>> 0 ret1 = round(1.5) print(ret1) >>> ...