2020-06-01 12:22

输出的格式取决于你的模板内容,你现在用的模板是 "1.ftl"。你需要将这个内容贴出来才好解决问题

你可以先输出到一个 .txt 文件,检查一下格式

此外,你的代码中有大量不需要的,new File、new FileOutputStream 这些都不需要,改成下面这样的:

String file = ...
Engine.use().setToClassPathSourceFactory().getTemplate("1.ftl").render(kv, file);

两行代码的事

2020-06-01 00:22

jfinal 不会处理静态资源

而且这几个资源并不是 css,而且资源没报 404 错误,证明路径对

2020-05-31 23:31

@GXS JFinalJson 只将 java 对象转成 json string,不存在任何安全性问题

安全问题通常是 json string 转 java 对象时出现

2020-05-31 16:37

renderJson + Interceptor 已经是代码量极少的方案了

拦截器权限验证,一般有两种方案:
1:登录后获得一个 access token ,每次检查 token 值。与微信公众平台方案相同

2:为每个客户端提供一个 appId + appSecret,客户端每次请求时利用这两个值对数据进行签名,服务端验证签名。与微信支付方案相同

上面两个方案,都只需要使用一个权限拦截器就可以搞定,没有比这更简单方便的方案了

2020-05-31 16:25

jfinal 的 renderJson 能否满足需求

安全保障使用一个拦截器足够了

2020-05-31 15:32

jvisualvm 的用法网上有很多,搜索一下

2020-05-31 15:32

本质上来说,这个是 jfinal 之外的事情,通过调整外部运行环境来解决

非得要从内部解决的话, 也不是从 jfinal 着手解决,而是找一找项目中占用内存较大的代码,或者检查是不是出现了内存泄漏问题

通过 JDK 自带的 jvisualvm 可以分分钟找到内存占用情况

2020-05-30 17:26

@liming_code 至始至终你都没贴出来出问题代码是什么

类型转换异常是最好处理的,例如 queryInt 改成 queryString 不就完事了?

2020-05-30 16:27

注意异常信息:ActiveRecordException: Only ONE COLUMN can be queried.

问题出在你的查询代码,我估计你是用的 Db.queryXxx(....) 样的方法,但凡是 queryXxx , 只允许 select 中出现一个字段,例如:
Db.queryInt("select nickName from account where id = ?", 123);

不能是 select * 也不能是 select a, b....

2020-05-30 13:46

@海哥

2020-05-30 11:48

这个办法好,点赞 + 收藏

不过在 jfinal.com 上还用不了,因为首页的下载被重定向到了一个纯 nginx web 服务上,没有使用 jfinal undertow

2020-05-29 19:22

@liming_code 有支付功能,简单好用

2020-05-29 18:19

@JFinal 没字段,你可以用 #(price), 然后向 templateByString(...) 传入 price 变量就可以了,代码在上面已经给出了

2020-05-29 18:16

@liming_code jfinal 俱乐部项目 jfinal-club 中几乎全是 ajax 提交,有需要可以加入俱乐部:
https://jfinal.com/club

花了钱的其实是最省钱的,时间很值钱, 不是人人都懂的道理