html博客源码_5分钟搭建私人Java博客系统——Tale

本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目。示例均在 Windows 操作系统下演示
be975fb12d4db53853f1fa755deb7f2d.png

本文作者:HelloGitHub-秦人

HelloGitHub 推出的《讲解开源项目》[1]系列,今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale

它拥有小、美、快、稳的特点。该项目完全开源、免费,能够让你快速搭建包含前、后台的博客系统,大大节省了搭建私人博客的时间,开箱即用。让你可以专注于创作,让有故事的人更方便的表达想法。

Tale 的项目地址:https://github.com/otale/tale

想要快速搭建一套自己的博客,那就跟着本文的步骤。你只需要花 5 分钟,就能拥有一个属于自己的私人博客了,并且可以对整个项目有一个完成的概念和感觉。下面是搭建完成的效果图:

d7a3b8f6e7426a5d40dcd183572ca090.png

那就让我们开始吧!

一、技术栈Tale

基于的技术如下:

  • Blade 框架:快速搭建 Web 应用程序的开源框架,该框架代码简洁、风格优雅。
  • Jetbrick-template 模板引擎:适合于动态 HTML 页面输出或者代码生成,可替代 JSP 页面或者 Velocity 等模板。 指令和 Velocity 相似,表达式和 Java 保持一致,易学易用。
  • SQLite 数据库:是一种嵌入式数据库,它的数据库就是一个文件。

二、项目结构

该项目采用 MVC 模式:Model 数据层、View 展现层,Controller 逻辑层。下面简单介绍下项目的结构,便于我们翻阅源码、开发和运行。项目结构如下图:

5cb2176b6ccd266d9881dda42c63dbb8.png

项目分为前端、后台两部分,下面我们分开来介绍:

2.1 后台代码目录说明

  • annotation:自定义注解目录,包括系统日志的注解类。
  • bootstarp:初始化操作目录,包括初始化进程类, sqlite数据库初始化类,公共常量类等。
  • controller:业务的控制器目录,包括文章控制器,分类控制器,初始化博客的控制器等。
  • extension:底层公用代码目录,包括后台公共函数,主题公共函数。
  • hooks:拦截器/过滤器目录,做一些拦截器的操作。
  • model:数据模型目录,包括数据库模型,参数模型,业务模型。
  • service:业务层目录,包括站点,系统配置,分类,标签,文章,评论的业务类。
  • task:定时任务目录,可自定时添加定时任务。
  • utils:业务层工具类目录,包括图像工具类,缓存工具类,公用工具类。
  • validators:验证器目录,包括保存文章的校验,添加评论的校验功能。
  • Application:入口类,在 IDE 中可直接运行。

2.2 前台代码目录说明

  • plugins:插架存放目录,此目录作者废弃了
  • static:静态资源目录,包括 css、images、js 和第三方插件
  • templates:模板资源目录,包括后台管理界面、公共模板和主题模板,支持扩展主题
  • application*.properties:项目环境配置文件

Tale 的项目的结构很简单和清晰,想把它运行起来也超级简单。你是不是开始手痒痒了,那接下来我们一起让它运行起来吧。

三、实战操作

3.1 准备工作

1. 确保本地已安装 Java8 开发环境:

7686c3ba041d25023be66ff1e370f376.png

2. 确保本地已安装 maven 工具:

1f22bb3d0f93d16052b69ed0568bb971.png

3.2 下载项目

通过 git clone 命令把项目下载到本地:

git clone https://github.com/otale/tale.git

3.3 运行项目

我这里介绍了两种运行方式:通过 IDE 运行和命令行运行。

3.3.1 通过 IDE 运行

1. 将项目导入到 IDE 中,这里我使用的是开发工具是 IDEA:

74228501e98a099202c2f51ccbb61494.png

2. 找到 com.tale.Application 类,直接运行:

80cd8401289eff21d6bc95c6ad8c17ef.png

3. 运行成功,如下图:

d66fec983a2fa029b8b7c6b91b366c13.png

3.3.2 命令行运行

1. 切换到项目源码路径,编译源码命令如下:

mvn clean package -Pprod -Dmaven.test.skip=true
951fc105f9196a38fbefc67b0980fcfe.png

2. 切换路径到 taleargetdist 目录

6bc82bd83e32fe92938bb89aa261ce89.png

3. 解压 tale.zip 压缩文件

6cc69878a99baafd104cf1863037ab4e.png

4. 运行 tale-latest.jar

java -jar tale-latest.jar

5. 启动成功如下图:

cde41e22263ea0aef5943143c1d9e936.png

3.4 项目启动成功

1. 初始化配置,访问: 首次登录,需要填写配置信息:

f62f7d61883dda628ad366e5d1527211.png

2. 登录后台管理系统,后台系统链接: 输入管理员账号和密码:admin 即可登录:

ae8df69d5444e29c951be7266a5b9573.png

后台管理页面如下图:

d386470f2aa3aee5dadbc8a4c0cffc3c.png

3. 博客前台页面,博客前台链接:

333e56385a2bb270f407f6918f106a5b.png

Tale 博客包含的功能就不一一介绍了,跟着项目的文档,在 web 页面"点点点"就可以了。那么快去写自己博客上的第一篇博客吧!

四、最后

教程至此,这个项目应该已经在你的本地跑起来了。是不是很有成就感?后面怎么玩就看你自己了:部署到服务器正式上线、定制自己专属的功能、给项目贡献代码等,都是可以的。

本教程是针对有一定 Java 编程基础,但又不知道如果运行本项目的小伙伴。如果你是老手欢迎直接阅读下面参考资料,获取更多更详细的资料。

五、参考资料

  • [tale wiki](https://github.com/otale/tale/wiki)
  • [Blade 官方文档](https://lets-blade.com/docs/why-blade.html)
  • [jetbrick-template 项目地址](https://gitee.com/sub/jetbrick-template)
  • [Blade 项目地址](https://github.com/lets-blade/blade)

References

[1] 《讲解开源项目》: https://github.com/HelloGitHub-Team/Article

9a21efeb39afee1e7ec3e8a1f2d300c3.png

欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容

『讲解开源项目系列』启动——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎联系我们给我们投稿,让更多人爱上开源、贡献开源~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

17秋 软件工程 团队第五次作业 Alpha Scrum2

17秋 软件工程 团队第五次作业 Alpha Scrum2 今日完成的任务 杰麟:Java后端的学习;世强:登录和注册接口编写;港晨:完成数据库表的设计;树民、陈翔:完成超级管理员后端框架。其余成员外出比赛。 …

运行返回签名不正确_如果调用约定不匹配,会发生什么?

蝎子信不信由你,调用约定不匹配是程序经常出问题的原因之一。当你的程序代码中出现不相匹配的调动约定的时候,编译器会”大吼大叫”,但是懒惰的程序员只会在其中进行强制转换,以使编译器”尽快闭嘴”。结果是:Windows不…

计算机硬件教学设计高中信息,重大版信息技术七上《计算机硬件系统》教学设计.doc...

重大版信息技术七上《计算机硬件系统》教学设计.doc文档编号:745134文档页数:3上传时间: 2019-09-19文档级别:文档类型:doc文档大小:33.00KB计算机硬件系统教学设计 知识目标 1、学生了解计算机组成各部分的…

html 循环_一个不被程序员认为是编程语言的语言——HTML,你怎么看?

HTML究竟算不算是一门编程语言,这是争执已久的话题。其实,从本质来讲,HTML确实算不上是一门编程语言。HTML全称,HyperText Markup Language。字面理解,HTML就是一种超文本语言,何谓超文本,就是其…

Java Web学习总结(10)学习总结-EL表达式

一,EL 表达式概述(EL主要从域中取数据) EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。 二,EL从域中取出数据(EL…

图片测量尺寸软件_3D扫描之工件测量检测

一.技术简介消费者追求品质和时尚的需求使制造领域发生了一系列变革,最明显的两点:一是产品外形增加了更多的曲面设计;二是产品的质量控制标准越来越严格。而这两点的变化又对检测行业提出了更高的要求,传统的测量或检…

input只能输入数字_Python基础第一个案例:猜数字游戏,这个都写不出,那就放弃吧...

前言本文案例只适合新手,老司机请绕路。游戏介绍:程序自己有一个数字,用户输入一个数字,两个数字进行比较。知识点:input函数字符串while循环if条件判断语句break语句开始撸代码先来看看效果图代码# 1. 有一个数字 my_…

java 异或_Javase第一部分:操作符的使用(按位异或运算)(含视频讲解)

本套课程讲解详细深入,内容丰富,包含了数据结构、JVM、GC等大厂常见的面试知识精讲,而且配有在线的预习文档课堂笔记每天作业,可以缩短你的学习周期,提高学习效率。Java精讲视频六大板块----带你轻松入门Java​mp.weixin.qq.com本…

图文详解linux/windows mysql忘记root密码解决方案

经常有用户过来咨询说自己的mysql服务器忘记密码了怎么办,为了更好的解决大家的困扰,本文特归档整理了windows和linux系统下,mysql忘记密码的解决方案。本文内容是我亲测实用,当然过程中踩过的坑我也会在本文中一并分享交流。废话…

vue css load,vue css3loadding插件的开发以及npm包的发布管理

插件开发的话建议使用vue-gitment脚手架开发vue init webpack-simple vue-gitment如果提示执行cnpm install vue-cli -g 全局安装cnpm install vue-cli -g在次执行上面的命令完成之后可以看到这样的目录在src下面添加component loadding.js loadding.vueloadding.vueexport def…

js删除数组中指定元素_js中数组操作详解

今天给大家带来一篇有关数组操作方法的文章。新建数组方法一:通过new运算符创建一个数组构造函数。var arr new Array();方法二:通过方括号直接创建直接量数组。var arr [1,2,3];添加数组中的元素方法一:通过下标添加元素。var arr new Ar…

批量下载,多文件压缩打包zip下载

0、写在前面的话图片批量下载,要求下载时集成为一个压缩包进行下载。从昨天下午折腾到现在,踩坑踩得莫名其妙,还是来唠唠,给自己留个印象的同时,也希望给需要用到这个方法的人带来一些帮助。1、先叨叨IO叨叨IO是因为网…

选了combobox里的选项后没激发change事件_35岁前多用利弊分析,35岁后要有“安全边际”...

想冒险,要趁早1/6、距离糟糕的事情发生,还有多远?我现在同时在职场和投资两类战线写文章,读者也开始串戏。前几天在我另外一个投资号上,有人问我:如果你把投资理念原则扩大到生活中,你觉得最有启…

[W班]第二次结对作业成绩评价

作业地址: https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1016 作业要求: 1、代码具有规范性。 2、实现的程序语言不做限制性要求,但需要能生成Windows平台的可执行文件。C/C/C#编译后即可生成,其他…

resnet50结构_无需额外数据、Tricks、架构调整,CMU开源首个将ResNet50精度提升至80%+新方法

本文是CMU的Zhiqiang Shen提出的一种提升标准ResNet50精度的方法,它应该是首个将ResNet50的Top1精度刷到80%的(无需额外数据,无需其他tricks,无需网络架构调整)。该文对于研究知识蒸馏的同学应该是有不少可参考的价值,尤其是里面提…

linq to sql 行转列_SQL 难题:行转列

问题:有一张学生成绩表sc(sid 学号,cid 课程,score 成绩),请查询出每个学生的英语、数学的成绩(行转列,一个学生只有一行记录)。建表语句:create 实现方式1—…

c++测试cpu_测评丨NXP系列 LS1028 LS1046等产品网络性能测试

号外号外!继OK1012A-C面市以来,飞凌嵌入式公司相继推出了OK1043A-C、OK1046A-C,以及最新上市的OK1028A-C,OK10XX系列产品也是一个大家族了。正所谓春兰秋菊,各擅胜场。下面小编就各产品的网络性能为您简单介绍一下。先…

四.Windows I/O模型之重叠IO(overlapped)模型

1.适用于除Windows CE之外的各种Windows平台.在使用这个模型之前应该确保该系统安装了Winsock2.重叠模型的基本设计原理是使用一个重叠的数据结构,一次投递一个或多个Winsock I/O请求。在重叠模型中,收发数据使用WSA开头的函数。2.WSA_FLAG_OVERLAPPED标…

vscode怎样导入数据_【Python开发】用VSCode+Jupyter notebook 编写 Python

版权声明:小博主水平有限,希望大家多多指导。本文仅代表作者本人观点。1、过去,想要在 VSCode 中运行 Jupyter notebook 需要安装一个 Neuron 扩展,我也装过,感觉很强大、很方便。不过现在,VSCode 中 Pytho…

springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略

众多游戏爱好者已加入我们!带你发现好游戏!休闲娱乐小游戏!点击下方↓↓↓↓"开始游戏",赶紧进入吧!!戳“开始游戏”玩百款火爆小游戏!《Among us》游戏好玩吗?《Among us…