2018-10-23 19:43
@alotuser 这个问题在 6 年半以前就有人提到过,但对方提出来的时候 jfinal 就已经有提供 API 来快捷解决问题, 6 年半以前的贴子在这里:
https://www.oschina.net/question/260040_46570
这个问题学名叫:mass assignment, 楼主能看到这个现象证明极其细心,在 IT 这行很有发展潜力啊
简单说,在 getModel(...) 以后,通过 Model.keep(....) 即可指定哪些字段是保留的,哪些是要删除的,例如更新用户信息时如果用到了 User ,那么:
getModel(User.class).keep("nickName", "email").update();
就只会更新指定的字段
无论恶意用户如何在表单中制造新的字段都不可能形成威胁。 这个问题其实对传统的 web 框架也有同样的问题,除非为接收表单单独做一个只存在部分字段的 setter 方法,否则那些没在表单中的字段也可以被注入
2018-10-22 19:45
@排骨逗逗 不会出现,除非你 ios 同时上传了文件,但这种情况被证实为 ios 这端发送的格式不对
因为 jfinal 在服务端是遵守的 http 协议,所以只要你客户端也遵守就不会有问题
2018-10-22 15:55
@錢勢惘導 估计你的 web.xml 文件中头部的文档限制部分配置不对,也可能是 jsp 文件的头部要添加什么指令的引用
JSP 用起来很多冗余,所以 jfinal 才提供 enjoy 引擎来取代 JSP, enjoy 引擎比 JSP 好用得多
2018-10-22 15:54
@錢勢惘導 这个是纯粹的 JSP 的行为, jfinal 是完全不干预的
2018-10-22 11:54
@錢勢惘導 这个与 jetty 无关,取值要弄对 contexPath 的名称,默认名是 "CONTEXT_PATH",用的时候这样:
${CONTEXT_PATH}
你也可以在配置的时候指定一个更简短的名字:
me.add(new ContextPathHandler("CXT"));
用的时候变这样:
${CXT}