2020-06-03 17:12
@Dull 使用 Timestamp 的情况,一般是需要 时、分、秒的, 所以 JFinalJson 的默认配置就挺好用的
你的需求是不需要 时、分、秒,所以,我建议你使用 mysql 的 date 类型,而不是 datetime 类型,因为有些浪费
2020-06-03 17:09
@cqztt 控制台下面执行 javac 命令,找不到命令证明是 JRE
2020-06-03 17:04
jfinal 4.9 重新设计了 JFinalJson 模块,采用了全方位扩展结构,所以要实现你这个功能极度简单:
JFinalJson.addToJson(Timestamp.class, (v, d, ret) -> {
Timestamp t = (Timestamp)v;
String s = ret.getFormat("yyyy-MM-dd").format(t);
ret.addStrNoEscape(s);
});
由于 Json.java 中并不支持 timestampPattern 配置,所以该配置仅仅是 JFinalJson 内部使用的,所以你当前无法简单地通过配置解决问题
在你不扩展的情况下,只可以临时指令 timestampPattern,例如:
JFinalJson.getJson().setTimestampPattern(...).toJson(...);
上面的临时指定不是全局配置,需要每次都要调用一下那个 setTimestampPattern
2020-06-03 15:49
@zhtian nginx 配置 root 也是可以的,可以指向多个资源目录
jetty-server 与 nginx 配置合使用的话,只能配置 nginx
jetty-server 独立使用,也有配置,网上找一下配置方法
2020-06-03 15:26
@逍遥一生 除了加这个,最好还加上这个判断:
if (inv.getReturnValue() != null) {
...
}
当返回值为 null 的时候,证明 action 方法返回为 void,例如:
public void index() {
}
2020-06-03 15:23
@cqztt 方法在前面已经告诉你了,至于少了输出 sql 的事,你得确保 arp.setDevMOde(true),还得确保 arp.setShowSql(true) 这两个配置都是 true
2020-06-03 14:36
@cqztt 补充一下: setDenyAccessJsp(boolean) 只是限制了浏览器地址栏直接访问 .jsp 文件, 并没有限制 renderJsp(...) 访问 jsp 模板
2020-06-03 14:35
@cqztt 如果你使用的是 jfinal 较高的版本,想要支持在浏览器中直接访问 .jsp 文件,需要配置:
public void configConstant(Constants me) {
me.setDenyAccessJsp(false);
}
这是为了防止破坏者上传恶意 .jsp 文件,然后在浏览器直接: http://xxx.yyy.com/path/xxx.jsp
上传 jsp 文件是常用攻击 java web 项目的方式
当然, jfinal 的文件上传已经对上传 jsp 文件做了限制,使用最新版本的 cos:
cos-2020.4.jar
新版本 jfinal 引入 setDenyAccessJsp(boolean) 是为了加固安全性
2020-06-03 14:06
@逍遥一生 或许添加一个对于 render 的判断为好,因为在 action 中可能使用了 render 方法,加这个判断:
if (inv.getController().getRender() != null) {
return ;
}
getRender() 方法如果返回的不是 null,证明在 controller 中调用过 render 系列的方法,或者 redirect 方法