java从零开始搭建博客网站(程序员大佬教你一步步用)(1)

后续:

开发环境、

项目结构、

框架说明

皮肤开发

环境准备
  • JDK:8 或更高的版本

  • Maven:2 或更高的版本

  • MySQL:可选的,默认使用内嵌的 H2 数据库

IDE

因为是 Maven 构建的项目项目,所以只要支持 Maven 的 IDE 都可以,推荐:

  • IntelliJ IDEA

  • NetBeans

使用 IDE 打开项目即可,第一次构建时会自动下载依赖。pom 里默认激活的 profile 使用了阿里云的 Maven 仓库,理论上依赖下载会比较快。

  1. 获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

  2. 616 959 444

运行

  • processor:控制器层,处理 HTTP 请求

  • service:服务层,实现业务逻辑,事务封装

  • repository:持久化层,实现数据库存取

  • model:数据模型,定义 JSON 键常量方便公用

  • 其他几个包:

    • api:实现 B3 构思;实现 MetaWeblog API

    • event:一些事件处理器,可对发布文章 / 评论进行扩展

    • filter:初始化检查、权限过滤等

    • plugin:内置插件的实现

    • util:Markdown、Emoi、皮肤等处理工具

    数据库

    初始化后会自动建表。如果用 MySQL,则启动前先手动建库,JDBC 相关参数请配置 local.properties。

    开发框架

    Solo 使用了 Latke 作为开发框架,这是一个类似 Spring 但以 JSON 为主的框架。

    Latke 快速上手指南

    网址:https://hacpai.com/article/1466870492857

    Latke 配置剖析

    网址:https://hacpai.com/article/1474087427032

    原理相关

    一:为什么又要造一个叫 Latke 的轮子?

    网址:https://hacpai.com/article/1403847528022

    二:Latke 源码解析(一)Servlet 部分

    网址:https://hacpai.com/article/1493267456529

    三:Latke 源码解析(二)IOC 部分

    网址:https://hacpai.com/article/1493620909167

    模版引擎

    使用 FreeMarker 作为模版引擎

    网址:https://hacpai.com/tag/FreeMarker

    皮肤开发

    好了,接下来就是我们的皮肤开发了!

    java从零开始搭建博客网站(程序员大佬教你一步步用)(2)

    开发步骤

    solo/src/main/webapp/skins/skin-name

    |- css // 样式目录

    | |- fonts // 字体文件

    | |- selection.json // 如使用 icomoon.io,请上传原文件

    | |- base.css // 样式,尽量避免使用行内样式及页内样式

    |- images // 图片目录

    |- js // JavaScript 目录

    | |- common.js // 脚本,尽量避免在 ftl 中写脚本

    |- lang // 语言配置文件,当 solo/src/main/resources/lang_zh_CN.properties 中无配置时可添加至此

    | |- lang_en_US.properties // 英文

    | |- lang_zh_CN.properties // 中文

    |- archive-articles.ftl // 某年某月所写文章的列表页面

    |- archives.ftl // 存档列表页面

    |- article.ftl // 文章页面

    |- article-list.ftl // 文章列表,可复用于有文章列表的页面

    |- category-articles.ftl // 某分类下的文章列表页面

    |- common-comment.ftl // 评论模版

    |- dynamic.ftl // 动态页面

    |- footer.ftl // 页尾

    |- header.ftl // 页头

    |- index.ftl // 首页页面

    |- links.ftl // 链接列表页面

    |- author-articles.ftl // 某用户所写的文章列表页面

    |- macro-comments.ftl // 评论列表及回复的宏

    |- macro-head.ftl // head 标签中的宏

    |- page.ftl // 导航页面

    |- preview.png // 皮肤首页截图,大小为 280px * 160px

    |- side.ftl // 侧边栏

    |- skin.properties // 皮肤信息

    |- tag-articles.ftl // 某标签的文章列表页面

    |- tags.ftl // 标签列表页

    1. 获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

    2. 616 959 444

    开发说明

    在 solo/src/main/webapp/skins目录下按照皮肤框架创建对于的文件夹及文件。

    可参照 91PHP目录中的文件进行创建及相应的修改。

    建议从 index.ftl 开始入手。

    JS、CSS 文件压缩可自行压缩或将皮肤目录拷贝到 solo-skin 下运行 cd toolers && yarn && npm run build或 cd toolers && npm install && npm run build。

    JS、CSS 引用示例如下:

    java从零开始搭建博客网站(程序员大佬教你一步步用)(3)

    注意事项

    macro-comments.ftl中标签 id 不可进行更改。

    文章内容须加上 class=“article-body”,否则不能进行代码高亮。

    贡献第三方皮肤可 Fork b3log-solo-third-skins,开发完成后 merge 到 b3log 下。

    footer.ftl中版权声明格式如下:

    Powered by <a href="http://b3log.org">B3log 开源</a> • <a href="https://hacpai.com/tag/solo">Solo</a>

    Theme by <a href="your site">your-name</a>.

    模板变量

    如果模板变量的类型是 JSONObject,其字段属性参考 org.b3log.solo.model包下的类

    每个页面都包含一些公共模板变量,这些模板变量单独列出(不在 *.ftl表中给出)

    每个页面的模板变量如以 Label 结尾,则为多语言配置文件,参看 lang_zh_CN.properties

    公共模板变量
    变量类型说明
    footerContentString页脚自定义内容
    adminUserJSONObject管理员
    userNameString当前登录用户名
    isIndexBool判断是否是首页
    faviconAPIString获取 favicon API 地址
    isLoggedInBool用户登录判断
    gravatarString当前登录人的 gravatar 地址
    runtimeModeString运行模式,例如 DEVELOPMENT
    runtimeEnvString运行环境,例如 GAE
    pageTypeString当前页面类型,例如 Index,Article,DateArticles
    servePathString应用路径,可在 latke.properties 中配置
    staticServePathString静态资源路径,可在 latke.properties 中配置
    staticResourceVersionStringjs, css 版本号,防止缓存
    topBarReplacementString公用 top-bar.ftl 内容
    pathStringAction 路径
    archiveDatesList存档日期列表
    articlesList存档文章列表
    blogTitleString博客标题
    blogHostString博客地址
    blogSubtitleString博客子标题
    htmlHeadString用户自定义的 HTML Head
    linksList链接列表
    localeStringString区域设定字符串
    metaKeywordsString用户自定义的关键字
    metaDescriptionString用户自定义的描述
    mostCommentArticlesList评论最多的文章列表
    mostUsedTagsList引用最多的标签列表
    mostViewCountArticlesList访问最多的文章列表
    noticeBoardString用户自定义的公告栏
    oIdString存档日期对象 Id
    pageNavigationsList自定义页面列表
    paginationFirstPageNumInteger文章列表分页第一页页码
    paginationLastPageNumInteger文章列表分页最末页页码
    paginationPageNumsList文章列表分页页号
    paginationPageCountInteger文章列表页数
    recentCommentsList最新评论列表
    skinDirNameString当前使用的皮肤目录名
    statisticJSONObject统计信息对象
    onlineVisitorCntInteger在线访客统计数
    usersList用户列表
    versionString当前使用的 Solo 版本
    yearString当前年份
    loginURLString登录 URL
    logoutURLString登出 URL

    archive-date-articles.ftl

    变量类型说明
    archiveDateJSONObject存档日期对象

    article-detial.ftl

    变量类型说明
    articleJSONObject文章对象
    articleCommentsList文章评论列表
    externalRelevantArticlesDisplayCountInteger站外相关文章显示数
    nextArticlePermalinkString下一篇文章链接
    nextArticleTitleString下一篇文章标题
    previousArticlePermalinkString上一篇文章链接
    previousArticleTitleString上一篇文章标题

    page.ftl

    变量类型说明
    pageJSONObject自定义页面对象
    pageCommentsList自定义页面评论列表

    tag-articles.ftl

    变量类型说明
    tagJSONObject标签对象

    tags.ftl

    变量类型说明
    tagsList标签列表

    java从零开始搭建博客网站(程序员大佬教你一步步用)(4)

    1. 获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!

    2. 616 959 444

    骚年,坚持想法,坚持实践吧!

    马上就写完了,明天会写完最后这一部分的!感谢观看,O(∩_∩)O谢谢!

    java从零开始搭建博客网站(程序员大佬教你一步步用)(5)

    ,