Java学习日志day02—-jfinal cms

jfinal cms简介

jfinal cms,采用了简洁强大的JFinal作为web框架,模板引擎用使用的是非常方便的beetl,数据库采用mysql,前端bootstrap框架。 支持多站点、oauth2认证、帐号注册、密码加密、评论及回复,消息提示,网站访问量统计,文章评论数和浏览量统计,回复管理,支持权限管理。
后台模块包含:栏目管理,栏目公告,栏目滚动图片,文章管理,回复管理,意见反馈,我的相册,相册管理,图片管理,专辑管理、视频管理、缓存更新,友情链接,访问统计,联系人管理,模板管理,组织机构管理,用户管理,角色管理,菜单管理,数据字典管理,参数配置,站点管理。

java框架jfinal架构图

在这里插入图片描述

java模板beetl

  • 变量引用
    变量引用与其他模板相同,可以通过 n a m e 调 用 。 ​ 这 里 要 特 殊 说 明 的 是 b e e t l 支 持 获 取 m a p 属 性 , 即 调 用 g e t ( O b j e c t k e y ) 。 如 果 对 象 既 有 具 体 属 性 g e t N a m e ( ) , 又 有 g e t ( O b j e c t k e y ) , 则 以 具 体 属 性 优 先 级 高 。 如 {name}调用。 ​这里要特殊说明的是beetl支持获取map属性,即调用get(Object key)。如果对象既有具体属性getName(),又有get(Object key),则以具体属性优先级高。如 namebeetlmap,get(Objectkey)getName()get(Objectkey){user.name}先进行调用getName()方法如果没有再调用get(Object key)方法。
  • list循环
  • 函数调用
  • 可以直接调用registerFunctionPackage(namespace,yourJavaObject),这时候yourJavaObject里的所有public方法都将注册为Beetl方法,方法名是namespace+"."+方法名
    ​jfinal cms中有许多方法和前台接口都是用了这种方式。

jfinal cms技术

项目结构

在这里插入图片描述

在这里插入图片描述

后台开发模块

首先后台代码主要分为Controller,Model和Service。Controller负责参数传递和页面跳转;Model负责数据承载;Service负责复杂业务处理。

  1. controller首先需要继承BaseProjectController类,这样方便项目统一扩展,页面跳转主要包含list(列表页)、add(添加页)、view(查看页)、delete(删除数据)、edit(编辑页)和save(保存方法)。这几个是基本操作,常规增删改查均以此规范进行编写。Controller遵循jfinal设置规则,并加入了注解功能。以下列表访问地址就是/admin/contact/list;编辑页面地址就是/admin/contact/edit/${id}。
  2. Model需要继承BaseProjectModel,方便业务扩展。jfinal
    Model可以不添加get、set方法。Model遵循jfinal设置规则,并加入了注解功能。通过ModelBind可以直接设置对应的表和主键,主键默认是ID。
    ​get、set方法可以通过作者的AutoCreate组件自动生成。
  3. ​Service集成BaseService,主要是Controller中复杂业务处理,将Controller中大量代码或者重复代码进行封装,统一调用。

页面代码

后台模板主要是增删改查,jfinal cms使用beetl模板。
​页面主要以${module}_名开头,包含add(添加)、edit(编辑)、list(列表)、view(查看)几个页面。

  1. ​add页面代码添加页面可以与edit页面公用~只是传递参数均为空。
  2. edit页面采用了beetl安全模式,保证参数为空不报异常,这样能够让add很好的引用。其次后端页面都采用了公共的头部标签head.html,列表和查看页面也是如此。
  3. 列表页方法调用以oper对象调用形式封装。增加、修改、查看页面以弹框形式展示,这样可以很好的保存列表页查询条件。查看页面关闭不会刷新列表,添加和修改页面关闭后均会刷新列表,均已封装为Iframe方法。
    paginator属性为列表分页查询调用方法。 showMenu方法为菜单选中展现,具体参数在菜单管理进行配置。
    menu.html为菜单栏,各页面直接引用即可。paginator.html为分页栏,固定获取page参数进行处理。
    列表头部设置设置class="sorting"为支持排序功能,name字段为传到后台的参数值。
  4. view页面相对简单,只是一个数据展示

前台模版开发

java代码

  • ​前台CommonController为整个项目默认入口,项目根目录、登陆、登出等。
    ​TemplateService为前台模板接口,这里的TemplateService通过beetl方法注册实现接口调用。再config中进行注册,代码如下groupTemplate.registerFunctionPackage(“temp”,
    TemplateService.class);这个不明白可以看下beetl文档,这样就实现了页面调用temp.article(1)返回文章对象。
  • 后台service封装实现具体方法,template进行service调用提供接口。这样前台页面直接访问template接口,很好的实现了代码前后端代码分离。当然前台的java还进行了公共Controller的封装以及公共参数的传递。
    ​如文章、评论、消息、个人信息、注册、标签等公共Controller以及统一前台参数传递拦截器FrontInterceptor。

前台模版接口

前台默认入口

FrontInterceptor前台拦截器会传递友情链接、关于我们、推荐文章和栏目信息数据。然后根目录会默认访问当前站点设置的栏目,如果未设置那么展示TbFolder.ROOT栏目,如果url传递了目录Id或者目录urlKey那么会访问对应的栏目。跳转规则是优先处理跳转jumpUrl,其次是配置的模板路径,如果都没有按照默认home/${urlKey}.html的规则跳转。从这里可以看出,简单的栏目规则就是每个站点下面栏目是和urlKey一一对应的。
​如我们添加一条栏目,id:101 urlKey:jflyfox那么我们可以通过“项目地址/101.html”访问,也可以通过“项目地址/jflyfox.html”访问。但是默认的栏目菜单生成规则是优先使用urlKey。
​其次是FrontAlbumImageController和FrontAlbumVideoController分别是图片和视频模块统一入口

前台接口

​前台接口主要是TemplateService这个类,提供方式是利用beetl函数注册方式,如groupTemplate.registerFunctionPackage(“temp”, TemplateService.class);代码,这样我们就可以通过temp.${method}进行调用了。
​例如通过temp.countView(100),我们就能获取到文章id为100的浏览量,temp. articlePage(23,1,20)我们就能够获取到栏目id为23下面的前20条文章。
​接口主要提供了文章列表、文章内容、浏览量、评论量,栏目标签,栏目、滚屏图片列表和提醒列表等信息。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值