You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
439 lines
17 KiB
439 lines
17 KiB
jfinal club 4.9.08 changes:
|
|
1:jfinal 升级到 4.9.08
|
|
|
|
2:jfinal undertow 升级到 2.5
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 4.9.06 changes:
|
|
1:jfinal 升级到 4.9.06
|
|
|
|
2:jfinal undertow 升级到 2.4
|
|
|
|
3:commons-email 升级到 1.5
|
|
|
|
4:JFinalClubConfig 中开启路由扫描功能
|
|
|
|
5:删除 FrontRoutes、AdminRoutes,路由注册已被路由扫描功能所取代
|
|
|
|
6:EmailKit 改为走 ssl 通道 465 端口,阿里云、腾迅云、华为云都屏蔽了 25 端口
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 4.9.02 changes:
|
|
1:jfinal 升级到 4.9.02
|
|
|
|
2:jfinal undertow 升级到 2.2
|
|
|
|
3:fastjson 升级到 1.2.73
|
|
|
|
4:JsoupFilter 加强对于 CSRF 攻击的防备
|
|
|
|
5:删掉 TimeKit,该类已被添加到 jfinal 4.9.02 中
|
|
|
|
6:LoginService 删掉 loginAccount.put("sessionId", sessionId)
|
|
|
|
7:AccountAdminService 限定对超级管理员的操作
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 4.9.01 changes:
|
|
1:jfinal 升级到最新版本 4.9.01
|
|
|
|
2:fastjson 升到 1.2.72
|
|
|
|
3:sql 模板文件与 java 源代码放在相同目录,需在 pom.xml 中添加 <resources> 配置
|
|
|
|
4:由于 sql 模板将被打入 jar 包,所以 _all_sqls.sql 中的 #include 改为绝对路径
|
|
|
|
5:TimeKit.parseDate(...) 方法改为 parse(...),因为这个更常使用且对 dataPattern 兼容更好,
|
|
原方法名改为 parseLocalDateTime(...)
|
|
|
|
6:删除 MyRedirectRender、MyRedirect301Render、MyRenderFactory,jfinal 4.9.01 已不再需要这个扩展
|
|
|
|
7:删除 JFinalClubConfig 中的 me.setRenderFactory(new MyRenderFactory()) 配置,原因同上
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 4.9 相对 4.8 的变化:
|
|
1:jfinal 升级到最新版本 4.9
|
|
|
|
2:jfinal undertow 升级到最新版本 2.1
|
|
|
|
3:文件上传组件 cos 升级到最新版本 2020.4
|
|
|
|
4:优化 css 样式
|
|
|
|
5:新增 TimeKit 工具类
|
|
|
|
6:新增 MyRenderFactory、MyRedirectRender、MyRedirect301Render 用于解决
|
|
nginx 代理 https 时重定向到了 http 的问题,需要在 nginx 中添加如下配置:
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Forwarded-Port $server_port;
|
|
|
|
|
|
7:fastjson 升到 1.2.70
|
|
|
|
------------------------------------------
|
|
|
|
|
|
jfinal club 4.8 相对 4.2 的变化:
|
|
1:jfinal 升级到最新版本 4.8
|
|
|
|
2:jfinal undertow 升级到最新版本 2.0
|
|
|
|
3:文件上传组件 cos 升级到最新版本 2019.8
|
|
|
|
4:log4j 升级到 1.2.17
|
|
|
|
5:首页添加轮播广告组件
|
|
|
|
6:package.xml 中 fileSet 标签添加 lineEnding 子标签,解决不同平台下脚本复制换行的问题
|
|
|
|
7:分页向前、向后按钮改为大于小于字符
|
|
|
|
8:MyFeedbackService、MyProjectSevice、MyShareService 的 update() 方法添加
|
|
remove("createAt"),避免 mass assignment 修改 createAt 值
|
|
|
|
9:fatjar 打包的 pom.xml 中的 shade 插件添加 filter,过滤掉 *.SF、*.DSA、*.RAS
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 4.2 相对 4.1 的变化:
|
|
1:jfinal 升级到 4.2
|
|
|
|
2:根据用户对 jfinal.com UI 的反馈,改进 html、css、js 细节,提升用户体验
|
|
|
|
3:首页、分享、反馈、动态列表中的 h1 改为 div, 否则在浏览器渲染的时候,如果电脑当时很慢
|
|
会首先显示很大的 h1 字体,然后才变成小字体
|
|
|
|
|
|
------------------------------------------
|
|
|
|
|
|
jfinal club 4.1 相对 4.0 的变化:
|
|
1:jfinal 升级到 4.1
|
|
|
|
2:大量调整 html、css、js 提升用户体验,例如:文档页面左侧菜单及脚本被大幅调整
|
|
|
|
3:所有 findByCache、findFirst、paginateByCache 由 getSqlPara 模式
|
|
改为 template(...) 模板模式
|
|
|
|
4:JsoupFilter 过滤 a 标签 href 中的 javascript 脚本,加强 XSS 防范
|
|
|
|
5:JsoupFilter 开启 html 5 的 video 标签,方便在文章中插入视频
|
|
|
|
6:Project、Share、Feedback 在 configEngine 中添加 me.addSharedObject(...),
|
|
便于在页面使用 field 表达式代替 static field 表达式,例如:
|
|
Project.REPORT_BLOCK_NUM
|
|
可改成下面的形式,进一步节省代码量
|
|
com.jfinal.club.common.model.Project::REPORT_BLOCK_NUM
|
|
|
|
---> 注意:Model 的 field 表达式读取字段的功能,最低 jfinal 4.0 版本才开始支持
|
|
|
|
7:后台 html 页面中 Project、Share、Feedback 的 static field 表达式改为 field 表达式
|
|
|
|
|
|
------------------------------------------
|
|
|
|
|
|
jfinal club 4.0 相对 2.0 的变化:
|
|
1:升级到 jfinal 4.0,去除 cglib/asm 依赖
|
|
|
|
2:前台 UI 全部替换,改进文档频道用户体验
|
|
|
|
3:控制层与业务层的依赖全部改成 @Inject
|
|
|
|
4:Validator 中改用 setRet(..) 与 render(getRet()),使得 js 中的代码统一,减少大量代码
|
|
|
|
5:优化部分 sql
|
|
|
|
6:AdminAuthService、PorjectService、ShareService、FeedbackService 中使用 jfinal 4.0
|
|
新提供的 template(...) 方法,节省大量代码,例如:
|
|
Db.template("admin.auth.isSuperAdmin", accountId).queryInt();
|
|
|
|
|
|
------------------------------------------
|
|
|
|
|
|
jfinal club 2.0 相对 1.9 的变化:
|
|
1:jfinal 升级到 3.8
|
|
|
|
2:jfinal undertow 升级到 1.6
|
|
|
|
3:升级前端 UI (TODO)
|
|
|
|
4:configConstant(...) 添加配置 me.setInjectSuperClass(true),支持超类依赖注入
|
|
|
|
5:生成器添加配置 gen.setGenerateRemarks(true) 为 base model 生成备注
|
|
|
|
6:all_sqls.sql 改名为 _all_sqls.sql,修改 JFinalClubConfig 相应配置
|
|
|
|
7:start.sh、stop.sh、restart.sh 合并为 jfinal.sh,添加 stop.bat
|
|
|
|
8:JFinalClubConfig 中的
|
|
PropKit.use(dev.txt).appendIfExists(pro.txt)
|
|
改为
|
|
PropKit.useFirstFound(pro.txt, dev.txt);
|
|
也即由生产环境配置追加模式改为生产环境配置整体代替模式
|
|
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 1.9 相对 1.8 的变化:
|
|
|
|
0:jfinal 升级到 3.6,避免客户端中途断开连接时抛出异常,日志文件会很干净。还包括很多其它改进与优化
|
|
|
|
1:jfinal undertow 升级到 1.5,解决 session 热加载问题
|
|
|
|
2:DocumentAdminService 、DocumentAdminController 的 findById 改成 findByIds
|
|
|
|
3:MessageController.friend() 添加 null 值判断并 renderError(404)
|
|
|
|
4:log4j.properties 日志文件存放添加 log 子目录,保持项目根路径干净清爽
|
|
|
|
5:JFinalClubConfig 中的 afterJFinalStart() 改名为 onStart()
|
|
|
|
6:stop.sh 三处 beforeJFinalStop() 改为 onStop()。添加 kill -9 有关注释
|
|
|
|
7:AccountService.getUsefulById(...) 添加 null 值判断
|
|
|
|
8:fastjson 升级到 1.2.55,支持 Page 反序列化(需要 jfinal-3.6 支持)
|
|
|
|
9:_Generator 中添加 setGenerateRemarks(false) 配置
|
|
|
|
10:添加配置:undertow.resourcePath=src/main/webapp, classpath:webapp
|
|
|
|
11:fatjar 打包配置文档修改主两处错误
|
|
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 1.8 相对 1.7 的变化:
|
|
|
|
0:jfinal-undertow 升级到 1.3
|
|
|
|
1:pom.xml 中添加 maven-jar-plugin 插件,避免 src/main/resources 下的配置文件打入 jar 包
|
|
好让 config 目录下配置文件生效,否则 config 中与 jar 包内的同名配置文件将不会生效
|
|
|
|
2:package.xml 中过滤掉对 web.xml、WEB-INF 的复制,jfinal-undertow 不需要 web.xml
|
|
|
|
3:更新 undertow-config-demo.txt,添加 jfinal-undertow-1.3 新增功能配置
|
|
|
|
4:添加 restart.sh 重启脚本
|
|
|
|
5:改进 ImageKit,解决 png 转 jpg 背景颜色改变的问题,感谢 @步步(讯) 的贡献
|
|
|
|
6:jfinal-club-1.8.sql 中的 role、permission、account_role、role_permission
|
|
表的 charset 由 utf8mb4 改成 utf8,解决老版本 mysql 无法导入问题
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 1.7 相对 1.6 的变化:
|
|
|
|
0:添加 "doc/___极速打包部署.txt" 说明文件
|
|
|
|
1:pom.xml 中删除 jetty-server 依赖
|
|
|
|
2:pom.xml 中添加 jfinal-undertow 依赖,从 jetty 切换到 undertow
|
|
|
|
3:pom.xml 中添加 maven-assembly-plugin 打包插件,根目录下面添加 package.xml 打包配置
|
|
|
|
4:根目录下面添加 start.sh、stop.sh、start.bat 启动脚本
|
|
|
|
5:JFinalClubConfig 中 JFinal.start(...) 改为 UndertowServer.start(...)
|
|
|
|
6:配置 文件 jfinal_club_config_dev.txt 的下划线改为减号
|
|
|
|
7:添加 undertow.txt 配置文件
|
|
|
|
8:修改 jfinal-club启动必读.txt,去除与 jetty 有关的一切内容
|
|
|
|
总述:jfinal-club 1.7 项目自身未做任何改动,所有变化围绕从 jetty-server 切换到
|
|
jfinal-undertow
|
|
|
|
jfinal-undertow 不仅启动极为迅速,热加载响应十分快捷,更重要是开发、打包、部署、运行
|
|
完全不用对项目或者配置有任何改动,从而实现从开发到部署的极致快捷
|
|
|
|
------------------------------------------
|
|
|
|
jfinal club 1.6 相对 1.5 版本的主要变化:
|
|
|
|
1:jfinal 升级到 3.5,pom.xml 中的 JDK 编译级别升为 1.8
|
|
|
|
2:jetty-server 升级到 jetty-server-2018.11,该版本的 JDK 最低要求为 1.8
|
|
|
|
3:JFinalClubConfig 中配置 me.setInjectDependency(true) 启用最新的 Aop
|
|
模块功能,免去业务层 AOP 必须手动 enhance 的步骤,免去业务层维护单例的样板式
|
|
代码,例如:
|
|
public static AccountService me = new AccountService();
|
|
|
|
注意:为了节省改动时间,现只先修改了后台管理模块的 AOP 使用方式。
|
|
此外,对于工具类的业务使用原有的 public static Xxx me 模式
|
|
比 @Inject 更加方便,同理,对于全局多处依赖的业务也如此,
|
|
例如:AccountService
|
|
|
|
4:添加文档管理模块,方便同学们使用 jfinal club 二次开发属于自己的带文档的社区
|
|
|
|
5:添加 @Remark 注解用于一键同步时向 permission 表的 remark 字段添加内容(该字段有内容时跳过)
|
|
详细用法请见 DocumentAdminController.java
|
|
|
|
6:账户管理添加 "查看后台账户/管理员" 功能,便于查看后台都有哪些账户被分配了角色,在对账户误操作分配了角色时,
|
|
也便于取消角色分配
|
|
|
|
7:模板文件 "/_view/admin/common/_menu.html" 之中添加了 #permission 指令 "细粒度"
|
|
控制菜单的示例,以及 #role 指令 "细粒度" 控制菜单的示例。缘于很多同学在问如何 "细粒度"
|
|
控制菜单权限的问题,jfinal club 细粒度控制菜单不需要添加后台代码,只需要事先在需要控制
|
|
的菜单那里用 #permission 与 #role 指令事先埋好点即可,权限控制的行为与后端完全一致,
|
|
前后端权限使用同一套逻辑,避免发生前后权限逻辑的死角、遗漏、不一致性
|
|
|
|
8:pom.xml 中添加 jetty-maven-plugin 插件,方便习惯于使用该插件的人启动并开发项目,启动项目只需
|
|
在控制台输入: mvn jetty:run
|
|
这种启动开发项目的方式也支持热加载,使用该启动方式可以去掉对 jetty-server 项目的依赖。
|
|
相对于 jfinal 官方提供的启动方式控制台输出信息较多较杂,启动速度慢,绝大多数情况建议
|
|
使用 jfinal 官方的启动方式
|
|
|
|
9:pom.xml 中添加 slf4j-nop 依赖避免在开发阶段启动项目时输出的 INFO 干扰信息,控制台从此特别干净清爽
|
|
|
|
|
|
10:reply.html 页面的 title、content 的输出使用 #escape() 指令,避免出现页面格式混乱
|
|
|
|
11:左侧首页菜单图标改为 fa-home,美观且符合度更高
|
|
|
|
12:BaseController 中添加 _clear_()
|
|
|
|
13:BaseController 中的 @Before(NotAction.class) 改用 @NotAction
|
|
|
|
14:启动方法统一使用 JFinal.start("src/main/webapp", 80, "/", 5),jfinal 3.5 已支持 IDEA
|
|
|
|
15:删掉 MyClassPathSourceFactory、MyClassPathSource,jfinal 3.5 已改进过 ClassPathSource
|
|
|
|
16:删除 com.jfinal.club.common.aop 包,改为使用最新版本 jfinal 3.5 的 aop
|
|
|
|
17:jdbcUrl 配置中添加 useSSL=false,避免使用高版本 mysql 时,控制台输出干扰开发的无用 INFO 信息
|
|
|
|
18:删除 JFinalClubConfig 中用于 IDEA 的启动代码以及相关所有注释说明,jfinal 3.5 已支持 IDEA 以及
|
|
所有 eclipse 版本
|
|
|
|
19:pom.xml 中的 maven-compiler-plugin 插件参数添加 -parameters 配置,便于二次开发中使用 action 带参
|
|
eclipse 相关编译配置见文档:https://jfinal.com/doc/3-3
|
|
|
|
---------------------------------------------------
|
|
|
|
jfinal club 1.5 相对 1.4 版本的主要变化:
|
|
|
|
1:项目管理、分享管理、反馈管理添加创建功能
|
|
|
|
2:分享管理、反馈管理模块添加回复管理功能
|
|
|
|
3:账户管理添加更换头像功能
|
|
|
|
4:权限管理的权限列表识别不存在的 action,并给出操作提示
|
|
|
|
5:授权管理添加 AdminAuthKit,支持 #if(hasPermission(...) ... #else ... #end 以及
|
|
#if(hasRole(...) ... #else ... #end
|
|
|
|
6:改进 ImageKit,移除对于 com.sun 包下的图片处理 API 依赖,更好支持 jdk 7/8
|
|
|
|
7:将 Switchery 组件换成 magic input 组件
|
|
a:在 __admin_layout.html 中引入 magic input 的 css 文件,删除 Switchery 的 css 与 js 引用
|
|
b:升级 jfinal-admin.js 中相关的 init 方法
|
|
c:将 checkbox 组件的 class="js-switch" 样式改为 class="mgc-switch mgc-tiny"
|
|
并将 initSwitchery() 方法名改为 initMagicInput(),并去掉第二个参数
|
|
|
|
8:修改页面提交以后返回到当前记录所在的页,老版本总是返回到第一页
|
|
|
|
9:RoleDirective.hasRole(...) PermissionDirective.hasPermission(...) 重构至 AdminAuthService
|
|
|
|
10:RoleDirective、PermissionDirective 中获取 loginAccount 的方式改为从 scope 中获取
|
|
|
|
11:重构 PermissionDirective、RoleDirective,代码更简洁
|
|
|
|
12:删掉 admin_role.sql 与 admin_permission.sql ,其中的 sql 转至 admin_auth.sql
|
|
|
|
13:删掉 all_sqls.sql 中对 admin_role.sql 与 admin_permission.sql 的 #include 包含
|
|
|
|
14:角色管理的 add、edit、_form 三个页面合并为 add_edit.html
|
|
|
|
15:UploadController 中的 renderJson(ret) 改为 render(new JsonRender(ret).forIE())
|
|
防止 ueditor 图片上传功能在 IE 下出现文件下载现象
|
|
|
|
16:$.pjax.defaults.timeout = 1500; 改为 5000
|
|
|
|
17:后台管理菜单颜色的 #ffffffb3 改为 hsla(0,0%,100%,.7),支持老版本 IE
|
|
|
|
18:其它打磨
|
|
|
|
升级建议:由于 jfinal club 1.5 打磨的地方比较多、比较细、也很重要,升级建议以 jfinal club 1.5 为基础,
|
|
将已经基于 jfinal club 1.4 做的项目中的自己写的代码重新整合到 jfinal club 1.5 中去。
|
|
二次开发产生的 js、css 代码要写到新建的文件中去,然后在 layout 中引用,这样有利于将来升级
|
|
|
|
此外,permission 表中的内容有所增加,升级完以后需要进入权限管理进行"一键同步",最后按个人需求
|
|
为角色分配相应的权限即可
|
|
|
|
---------------------------------------------------
|
|
|
|
|
|
jfinal club 1.4 相对 1.3 版本的变化:
|
|
|
|
1:升级到 jfinal 3.4
|
|
|
|
2:后台管理功能全部重写,添加内容管理、账户管理、角色管理、权限管理等功能
|
|
|
|
3:后台管理界面全部重写,手写骨架,右下角内容区域使用 bootstrap 3,方便进行二次开发
|
|
二次开发基本只需要照猫画虎,添加右下角内容区域代码
|
|
|
|
4:添加 #role #permission 指令,用于在界面控制权限
|
|
|
|
5:其它一些细节变化将在直播中讲解,会有更深刻的了解
|
|
|
|
|
|
注意:后台管理功能看似简单,其实里头很多细节,采用极简设计,尽可能消除学习成本和二次开发成本
|
|
后台管理源代码与功能将会在直播中详细讲解
|
|
|
|
|
|
---------------------------------------------------
|
|
|
|
|
|
jfinal club 1.3 相对 1.2 版本的变化:
|
|
|
|
1:升级到 jfinal 3.3
|
|
|
|
2:JFinalClubConfig 中加载配置文件由 try catch 改为使用 PropKit.appendIfExists(...)
|
|
|
|
3:ShareController、FeedbackController、MessageController、NewsFeedController
|
|
中的 renderToString(...) 的模板去掉路径
|
|
|
|
4:sql 管理功能使用 ClassPathSourceFactory 来做,从类路径里头加载
|
|
|
|
5:mysql 驱动升级到 5.1.44 版本
|
|
|
|
注意:jf club 1.2 已经处理过 Ret 类的升级,从 1.2 升级到 1.3 只需要关注上述五条
|
|
doc 目录下面的三个 png 图片文件,仅用于指导更老的版本升级到 1.2 或 1.3
|
|
|
|
---------------------------------------------------
|
|
|
|
|
|
jfinal club 1.2 相对 1.1 版本的变化:
|
|
1:jfinal 升级到 3.2 版本
|
|
2:文件上传组件 cos 升级到 2017.5 版本
|
|
3:UploadController 捕获 ExceededSizeException 异常,更好处理上传文件长度超出范围
|
|
4:"/upload" 路由改为 "/common/upload",修改 ueditor 相关配置指向新路由。此改进主要为了 nginx 配置方便
|
|
避免与 "webapp/upload" 的配置产生影响,减少 nginx 配置量
|
|
5:查找替换 html 文件中的 22 处 ret.isOk 为 ret.state == "ok"
|
|
6:查找替换 html 文件中的 4 处 ret.isFail 为 ret.state == "fail"
|
|
7:查找替换 js 文件中的 11 处 ret.isOk 为 ret.state == "ok"
|
|
|
|
|
|
建议大家升级自己项目 Ret 的方式为:
|
|
1:利用查找替换功能将 html 与 js 中的 ret.isOk 替换为 ret.state == "ok"
|
|
2:利用查找替换功能将 html 与 js 中的 ret.isFail 替换为 ret.state == "fail"
|
|
|
|
|
|
如果项目未涉及到 Ret 生成的 json 数据则不需要处理,java 代码中的
|
|
ret.isOk() ret.isFail() 行为并无变化,不需要处理
|
|
|
|
|
|
如果觉得上述升级方式比较麻烦,可以在项目启动时调用一次 Ret.setToOldWorkMode()
|
|
可以继续沿用老版本的工作模式,这种升级方式比较适合不需要怎么改动的老项目
|
|
|
|
|