2018-10-25 11:20
@shenyao jfinal 是遵守 servelet 规范的 web 框架,所以本来就可以打成 jar 包来运行,只是官方并没有给出 demo
自己要做的话是要花点时间研究,这里有很多资源可以参考:
http://www.jfinal.com/share/770
http://www.jfinal.com/share/860
http://www.jfinal.com/share/786
http://www.jfinal.com/share/422
jfinal 官方没给出方案,是因为正在开发 undertow-server 项目,undertow 是为嵌入式 web 服务而生的,易用性、轻量级、性能都比 jetty 要好,所以就没有必要出一个 jetty 版本的
2018-10-25 01:28
@简单代码 jfinal 3.5 已经提供了 getRawData() 来获取 json 数据了
2018-10-24 17:14
@nihaohaaaaa 看一下 FileRender.java 源代码,在 render() 方法中打个断点看看
2018-10-24 15:16
@nihaohaaaaa 你说的这段话:“renderFile() 不是能在前台直接打开一个新的窗口吗?@JFinal”
方向错了, jfinal 是纯后端的东西,是无法干涉前端的事情的,前端是 js 的事情,你打开 F12,再按一下 esc 键会出来 js 报的异常,根据异常解决
2018-10-23 23:47
@alotuser 具体怎么做呢? 能否在贴子里头补充点示例性的代码?
我在直觉上感觉这个没法处理,因为 setter 方法也是要用于正当功能需求的,如果过滤的话,也就影响正当功能了
2018-10-23 21:06
@alotuser 源头不好杜绝,假定你的 account 这张表有个字段叫 money,然后你的 Model 通常也会有 setMoney(int) 方法,这个 setMoney(int) 在正常使用情况下用于合理的需求,例如更新 money 值的时候
但为了合理需求而创建的 setMoney(...) 方法也会被非法利用,恶意用户可以人为制造带有 money 字段的 post 请求,客户端的这个恶意操作是无法消除掉的
2018-10-23 19:49
再补充一下, jfinal 的 Model 中还预备了一个回调方法叫 public void filter(...),只要你的 model 中覆盖掉这个方法,就会被回调,如果希望有更高的安全性,避免其他开发者没有使用 Model.keep(...) 从而造成问题,还可以像下面这样来做:
public class User extends Model {
protected void filter(int filterBy) {
// 这里使用 keep 或者 remove 过滤掉一些不希望被操作的对象
// 在需要对这些字段进行操作时,使用别的方式来做,例如Db.save()
}
}