
2021SC@SDUSC
本篇文章围绕页面代码模块module-page进行介绍与分析,先明确module-page的模块架构与各子模块用途,再详细分析第一个子模块module-page-model。
目录
一、module-page模块概述
1.1 JPress架构
1.2 module-page对应功能
二、module-page模块架构
2.1 module-page-model
2.2 module-page-web
2.3 module-page-service
2.4 module-page-service-provider
三、module-page-model模块分析
3.1 添加依赖
3.2 baseSinglePage
3.3 SinglePage
四、总结
JPress的功能强大,包含文章、页面、产品、用户相关的各大模块功能 。由架构图可知,页面模块代码module-page为JPress的一个重要板块,module-page与jpress-template模块结合,可以让我们快速开发模板,制作个人技术博客、营销界面、公司官网等。
页面模块代码对应的功能为页面管理、新建、评论、设置功能。
module-page包含四大子模块:
module-page-model module-page-web module-page-service module-page-service-provider
包含抽象类baseSinglePage、他的子类SinglePage,及抽象类baseSinglePageComment、他的子类SinglePageComment。
本模块的主要依赖为Jboot,且Jboot为基于 JFinal 完整的 MVC + ORM 支持的开发,所以两者均为开发的主要框架。其次是需要jpress-commons工具类、jpress-core功能核心类两个模块。
io.jboot jbootio.jpress jpress-commonsio.jpress jpress-core
继承JbootModel,而JbootModel继承自jfinal.plugin.activerecord.Model,实现IBean接口。
public void setId(java.lang.Long id) {
set("id", id);
}
public java.lang.Long getId() {
return getLong("id");
}
baseSinglePageComment与baseSinglePage的实现方相同,只是功能有所不同,定义了一条评论的基本属性及其get和set方法。
继承baseSinglePage
public String getHtmlView() {
return StrUtil.isBlank(getStyle()) ? "page.html" : "page_" + getStyle().trim() + ".html";
}
public String getUrl() {
return UrlUtils.getUrl("/", StrUtil.isNotBlank(getSlug()) ? getSlug() : getId());
}
public String getUrlWithPageNumber(int pageNumber) {
if (pageNumber <= 1) {
return getUrl();
}
SinglePageComment与SinglePage的实现方式相同,只是功能有所不同,同样改写了父类的部分方法,定义新的评论的状态的变量,与更改评论状态的方法。
本篇文章主要分析了module-page的架构和对module-page-model模块的代码分析,发现本项目使用jboot,封装了Jfinal,采用了JFinal作为核心,JPress也是得益于JFinal灵活的架构。所以在之后的代码分析中,对JFinal的掌握是分析代码的必要途径。