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后端的学习;世强:登录和注册接口编写;港晨:完成数据库表的设计;树民、陈翔:完成超级管理员后端框架。其余成员外出比赛。 …

计算机工勤考试试题,(河南省事业单位工勤技能考试试题_计算机信息处理.doc

(河南省事业单位工勤技能考试试题_计算机信息处理第7章 制作演示文稿 (PowerPoint 2003)7.1 单选题1.PowerPoint的运行环境是( B )。A.DOS B.Windows C.UCDOS D.高级语言2.PowerPoint属于( )。A…

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

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

mac svn 使用

上传文件$ svn import file.xls svn://ip/sursen/05I\&V周报 -m "te"备注: -m "冒号里面一定填写文件 "下载文件svn checkout svn://ip/sursen/05I\&V周报查看文件:svn list svn://ip/sursen/05I\&V周报MacBook-Pro:05I…

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

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

感谢Thunder团队

在这次alpha版本开发的过程中,我想感谢团队中的每一个成员。 第一次合作完成一个完整的项目,让我深刻的感受到了合作的重要性。在一个优秀的团队中,能不断地学习到很多东西。 感谢组长王航,对项目认真,对成员负责。合理…

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

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

第一学期计算机网络作业,2010-2011学年第一学期计算机网络(33973)试卷

江西财经大学2010-2011第一学期期末考试试卷试卷代码:33973 授课课时:48 考试时间:150分钟 课程名称:计算机网络 适用对象:本科选课班 试卷命题人 凌传繁 试卷审核人 万 征一、单项选择题(从下列各题四个备…

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

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

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

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

计算机词汇查询,计算机辅助英语词汇查询系统的设计.doc

计算机辅助英语词汇查询系统的设计计算机辅助英语词汇查询系统的设计摘 要: 以往所使用的基于Visual Studio的计算机辅助英语词汇查询系统存在查询页面过于繁琐运行效率低,导致查询系统速度慢以及实用性差等缺点。因此设计基于Struts的计算机辅助英语词汇…

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

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

远程服务器任务,远程大批量操作windows服务器的计划任务

在工作过程中,经常需要大批量对某一批次机器进行计划任务设置,可以通过组策略实现,也可以通过脚本操作。本文演示如何通过powershell脚本远程大批量给若干台机器设置周期重启的操作。#生成10到30的数组$a(10..30);#初始化空的数组$pcname();#…

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

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

js 设计模式

首先我们需要知道JavaScript与传统的面向对象编程(oop)不同,它没有传统意义上的类,该语言的一切都是基于对象,依靠的是一套原型(prototype)系统。JavaScript通过原型委托的方式实现对象与对象之…

电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...

电子科技大学 计算机科学与工程 学院标 准 实 验 报 告(实验)课程名称 汇编语言与微机接口技术综合实验电子科技大学教务处制表电 子 科 技 大 学实 验 报 告 (一)学生姓名:郫县英格拉姆 学 号:2014123456789 指导教师:皮皮怪实验地点&#x…

python环境变量配置步骤_关于人工智能Python系统环境变量设置步骤

最近无论是JAVA的环境变量配置,还是Python环境变量配置都有学生问我,我在这里写一下回答,当然我以配置Python的环境变脸来举例.首先需要确定本机电脑上安装上了Python首先解释一下为什么需要配置环境变量,我们平时打开一个应用程序,一般都是在桌面双击该软件的快捷方…

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

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

jquery 判断控件css样式,jQuery获取并设置CSS类

jQuery获取并设置CSS类通过 jQuery,可以很容易地对 CSS 元素进行操作。jQuery 操作 CSSjQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些:• addClass() - 向被选元素添加一个或多个类• removeClass() - 从被选元素删除一个或多个类• toggleCl…

零宽断言 python_正则表达式-零宽断言

[toc]一、零宽断言-介绍零宽断言,它匹配的内容不会提取,其作用是在一个限定位置的字符串向前或向后进行匹配查找。1.1、应用场景排除查找,查找不含有某段字符串的行包含查找,查找含有某段字符串的行二、断言的分类2.1、正先行断言…