CleanBlog(个人博客+源码)
CleanBlog是一个高端(低调)、大气(简洁)的个人博客系统,之前在网上看到了好多个人博客网站,感觉很酷的,自己也想搭建一个,最近 刚学完SSM(Spring/SpringMVC/MyBatis),所以就采用SSM来搭建一个简洁的个人博客。先上一张博客首页图片:

1 CleanBlog架构
CleanBlog整体架构比较简单,主要有写博客、看博客、留言板功能。CleanBlog由SSM技术来实现,SpringMVC负责请求解析转发 并渲染视图,MyBatis负责持久层的交互操作,Spring作为整体平台集成SpringMVC和MyBatis。数据库使用MySQL,Web前端 采用了Bootstrap,文本编辑器使用了UEditor(一个开源富文本Web编辑器,来自百度),前端布局灵感来自于Clean Blog(也可以说是套用该模板)。
CleanBlog整体框架图:

2 CleanBlog逻辑讲解
CleanBlog采用IDEA开发,首先需要搭建SSM环境,关于如何在IDEA下搭建SSM环境请点击:MyBatis使用总结+整合Spring和Spring学习之第一个Spring MVC程序(IDEA开发环境)。最后搭建好的工程如下图所示:

2.1 数据表
目前CleanBlog功能较少,只涉及到2张表,blog表和message表(留言板功能)。两个表结构分别如下所示:
CREATE TABLE blog (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
text TEXT,
preview VARCHAR(128),
author VARCHAR(32),
category VARCHAR(32),
date TIMESTAMP DEFAULT '2016-05-20 00:00:00'
); CREATE TABLE message (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
author VARCHAR(32),
content TEXT,
date TIMESTAMP DEFAULT '2016-05-20 00:00:00'
)
2.2 数据表操作Dao类
数据表操作Dao类在 com.luoxn28.blog.dao包下,主要有Blog和Message相关Dao类,其中该包下的xxxMapper.xml文件是对应Dao 类的SQL映射文件,MyBatis中会用到该SQL映射文件。com.luoxn28.blog.dao包结构如下所示:

2.3 CleanBlog控制器类
CleanBlog控制器类有Blog类(用于显示blog)、Index类(显示主页)、Message类(留言板功能)、Post(在线写博客),这几个类都在com.luoxn28.blog.controller包下,该包结构如下所示:

比如Index源码如下,负责接收主页请求逻辑的处理:
package com.luoxn28.blog.controller; import com.luoxn28.blog.dao.Blog;
import com.luoxn28.blog.dao.BlogDao;
import com.luoxn28.blog.dao.MessageDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import java.util.List;
import java.util.Map; /**
* Index控制器
* @author luoxn28
* @date 2016.6.18
*/
@Controller
@RequestMapping
public class Index { // blog表操作类
@Autowired
private BlogDao blogDao; // Message表操作类
@Autowired
private MessageDao messageDao; @RequestMapping("/index")
public String index(Map<String, Object> map) {
List<Blog> blogs = blogDao.getAll();
List<com.luoxn28.blog.dao.Message> messages = messageDao.getAll(); map.put("blogs", blogs);
map.put("messages", messages);
return "index";
}
@RequestMapping("/")
public String index0(Map<String, Object> map) {
return index(map);
} }
3 CleanBlog源码获取
下面到了见证源码的时刻了,该项目的源码已经push到了我的github上了,项目地址为:luoxn28/CleanBlog(ps: 欢迎Star);CleanBlog目前已经部署到了服务器上,在线访问请点击:http://luoxn28.xyz:8080/。
3.1 如何使用CleanBlog
fork整个CleanBlog工程后,下载到本地,然后新建IDEA的J2EE工程,选择Web Application。然后导入CleanBlog源码,在src目录下新建db.properties文件,该文件和db.sql文件在同一个目录 下,用于配置数据库相关信息,主要配置内容如下所示,jdbcUrl后的参数用于设置数据传输编码格式,解决中文入库乱码问题。
user=xxx
password=xxx
driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://192.168.1.150/clean_blog?useUnicode=true&characterEncoding=utf8
然后,登录MySQL,运行工程src目录下的db.sql中的所有命令,新建项目所需的数据库和数据表。最后编译、运行,打开浏览器就可以看到CleanBlog的主页了。
资源链接:
CleanBlog(个人博客+源码)的更多相关文章
- 源码安装ceph后使用测试集群的方法
标签(空格分隔): ceph,ceph实验,ceph源码 通过博客 源码编译安装ceph(aarch64架构) 成功安装ceph之后,之后可以运行一个测试集群进行实验 1,进入安装构建目录: [roo ...
- 博皮设计:HTML/CSS/Javascript 源码共享
首先感谢 sevennight 对我的大力帮助,由此他也成为了我的第一位园友:其次,由于本人并不了解 HTML/CSS,因此几乎都在 李宝亨 设计的 博皮源码 的基础上进行的修改:最后,为了获得 更加 ...
- C#源码500份
C Sharp 短信发送平台源代码.rar http://1000eb.com/5c6vASP.NET+AJAX基础示例 视频教程 http://1000eb.com/89jcC# Winform ...
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Beta阶段Scrum 冲刺博客合集
Beta阶段博客链接集合 第一篇Scrum冲刺博客 第二篇Scrum冲刺博客-Day1 第三篇Scrum冲刺博客-Day2 第四篇Scrum冲刺博客-Day3 第五篇Scrum冲刺博客-Day4 第六 ...
- .NET 推荐博客
燎原之星的博客 农码一生博文索引 http://www.cnblogs.com/zhaopei/p/Indexes.html 那些年搞不懂的术语.概念:协变.逆变.不变体 http://www.cnb ...
- 博客系统实战——SprintBoot 集成Thymeleaf 实现用户增删查改(含源码)
近来在学习SprintBoot +Thymeleaf +Maven搭建自己的博客系统,故在学习过程中在此记录一下,也希望能给广大正在学习SprintBoot和Thymeleaf的朋友们一个参考. 以下 ...
- 小兔博客新增源码下载模块,JavaWeb项目实战,JavaScript入门教程 ,JavaSE案例等
从今以后,所有的源码在 http://www.xiaotublog.com/downloadView.html 都可以免费下载,在下载页面还可以直接链接到相关的教程地址(如果有教程的话...). 最近 ...
随机推荐
- jQuery Transit 过渡效果
jQuery Transit 使用 CSS3 的新特性来实现过渡效果,比默认的.animate方法要顺畅得多. 因为使用 CSS3 进行过渡效果,所以对不支持 CSS3 的浏览器效果有所下降. 语法和 ...
- 高性能javascript学习笔记系列(3) -DOM编程
参考 高性能javascript 文档对象模型(DOM)是独立于语言的,用于操作XML和HTML文档的程序接口API,在浏览器中主要通过DOM提供的API与HTML进行交互,浏览器通常会把DOM和ja ...
- oracle表的管理
表名和列的命名规则 必须以字母开头: 长度不能超过30字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z,a-z,0-9,$,#等: 数据类型: 字符型: char 定长 ...
- Day Tips:Search CPU 100%
Powershell:Set-SPEnterpriseSearchService -PerformanceLevel Reduced Specifies the relativ ...
- Swift设置自动行高
// 设置行高自适应 tableView.rowHeight = UITableViewAutomaticDimension // 设置预估行高 tableView.estimatedRowHeigh ...
- 如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k
一:问题描述: 应用中的Dex 文件方法数超过了最大值65536的上限,简单来说,应用爆棚了. 二.解决方案: 方案1:使用插件化框架 比如: https://github.com ...
- iOS coreData问题
iOS常见错误-CoreData: Cannot load NSManagedObjectModel.nil is an illegal URL parameter 这是因为在工程中CoreData的 ...
- 普通View的measure流程
对于普通的view,其测量在ViewGroup中的measureChildWithMargins函数中调用child view的measure开始测量. 1:从measure函数开始 public f ...
- Android性能优化的浅谈
一.概要: 本文主要以Android的渲染机制.UI优化.多线程的处理.缓存处理.电量优化以及代码规范等几方面来简述Android的性能优化 二.渲染机制的优化: 大多数用户感知到的卡顿等性能问题的最 ...
- NSCache详解
NSCache---详解 NSCache: NSCache是苹果官方提供的缓存类,在AFNetworking中,使用它来进行图片缓存. NSCache是线程安全的,在多线程操作中,不需要对Cache进 ...