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

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

2020-05-29 14:44

jfinal 的 active record 模块的 sql 管理功能极度强大、方便,一定要用上

这个功能可以在外部文件中管理 sql , 也可以在 java 代码中写 sql 模板来使用,通过 Db.templateByString(...) 就可以用上了

文档中非常详细:
https://jfinal.com/doc/5-13

2020-05-29 14:43

你的 sql 中只有一个问号,但你传入了两个参数,所以是错误的,改成下面这样:
Db.update("UPDATE CSAlogin SET RmbPoint=RmbPoint + price WHERE mobile=?", mobile);

如果你要添加的这个 price 并不是数据库中字段的值,改成下面这样来做:
String sql = "UPDATE CSAlogin SET RmbPoint = RmbPoint + #(price) WHERE mobile= #para(mobile)";

Kv kv = Kv.by("price", 这里填入你希望的值).set("mobile", mobile);
Db.templateByString(sql, kv).update();

2020-05-29 14:38

回到你的碰到的问题本身,我建议你远程调试一下:
https://jfinal.com/feedback/5106
https://jfinal.com/share/1528