2020-05-28 16:03

@天晴 jfinal 框架内部会对你抛出的所有异常做日志, 但前提是不要吃掉异常,要继续向外抛出

2020-05-28 16:02

druid 的日志功能是啥?

如果是 druid 内部的日志功能,得看看他的文档是否有相关配置支持

2020-05-28 14:05

分页与插入,前者是查询,后者是 insert , 信息量不够

提供更多信息量,消除不确定性,这个问题才有可能得到答案

2020-05-28 14:04

@fred 这个是 html 压缩功能,不是 java script 压缩功能,后者的压缩涉及 js 语法解析,工作量是极大的

有两个建议,一是使用换行作为压缩分隔字符
setCompressorOn('\n')
这个配置压缩率是完全一样的



第二个方案是继承 Compressor ,用上第三方的 js 压缩工具扩展一下,在 Compressor 的注释中有如下说明:

7:压缩分隔符默认配置为 '\n',还可配置为 ' '。如果模板中含有 javascript 脚本,需配置为 '\n'

8:可通过 Engine.setCompressor(Compressor) 来定制自己的实现类 可使用第三方的压缩框架来定制

例如使用 google 的压缩框架: 压缩 html: com.googlecode.htmlcompressor:htmlcompressor 压缩 javascript: com.google.javascript:closure-compiler

2020-05-27 17:46

@苦丁香 http://free-download.jfinal.com/download/MyRenderFactory.zip

2020-05-27 17:46

在 nginx 中添加配置传入 X-Forwarded-Proto、X-Forwarded-Port 两个变量以后,再下载下面的扩展代码用于自己的项目,可完美解决该问题:
http://free-download.jfinal.com/download/MyRenderFactory.zip

以上这个解决方案会做到 jfinal 5.0 中去,目前只能先下载我提供的代码解决

2020-05-27 17:45

稍微描述一下 nginx 代理实现 "https" 时, redirect(…) 会错误重定向到 "http" 的原因:
1: nginx 代理实现 https
2: 浏览器与 nginx 用的是 https 通道
3: 但 nginx 与 jfinal 项目之间用的是 http 通道
4: 在 jfinal 的 RedirectRender.java 中通过 request.getSheme() 得到的协议值必然是 "http"。通过 request.getServerPort() 得到的必然是 nginx 与 jfinal 之间用的 port

从而,站在 jfinal 的角度得到的协议值 "http" 与 port 值都是错误的,所以需要在 nginx 上通过配置传入额外的参数来解决,这两个参数就是:
X-Forwarded-Proto、X-Forwarded-Port

配置方法如下:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

2020-05-27 17:45

在 nginx 中添加配置传入 X-Forwarded-Proto、X-Forwarded-Port 两个变量以后,再下载下面的扩展代码用于自己的项目,可完美解决该问题:
http://free-download.jfinal.com/download/MyRenderFactory.zip

以上这个解决方案会做到 jfinal 5.0 中去,目前只能先下载我提供的代码解决

2020-05-27 17:43

稍微描述一下 nginx 代理实现 "https" 时, redirect(…) 会错误重定向到 "http" 的原因:
1: nginx 代理实现 https
2: 浏览器与 nginx 用的是 https 通道
3: 但 nginx 与 jfinal 项目之间用的是 http 通道
4: 在 jfinal 的 RedirectRender.java 中通过 request.getSheme() 得到的协议值必然是 "http"。通过 request.getServerPort() 得到的必然是 nginx 与 jfinal 之间用的 port

从而,站在 jfinal 的角度得到的协议值 "http" 与 port 值都是错误的,所以需要在 nginx 上通过配置传入额外的参数来解决,这两个参数就是:
X-Forwarded-Proto、X-Forwarded-Port

配置方法如下:
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

2020-05-27 17:39

@himans 记得要回来反馈, 实践后的结果极端重要

2020-05-27 17:05

关于集成 rabbitmq 有相关 demo 或者文档的问题。 jfinal 是 mvc + orm 框架,本质上是可以在 jfinal 上使用任何第三方的,不一定要有一个集成的动作

你当前已经会使用 jfinal 了, 剩下的事情就是看一下 rabbitmq 的使用文档,直接在 jfinal 中用起来

通常只要在 jfinal 提供的 onStart() 方法中初始化一下 rabbitmq 就可以使用了,有关 onStart() 的用法见这里:
https://jfinal.com/doc/2-8

2020-05-27 17:03

@liubo187 两百人同时使用这个功能的时候会出现有人无法保存的问题,这个可能有很多原因,例如是不是数据库受不了这个并发量而卡死?

所以,这个你一定得做日志,然后根据异常排查原因,所以你上面的这个代码是极端错误的:
} catch (Exception e) {
e.printStackTrace();

上面的代码将异常信息隐藏了,应该要改成:
} catch (Exception e) {
log.error(e);

有了异常,你才好去找原因

2020-05-27 16:44

大致看了一下没有看出并发问题,检查一下 controller 中是不是有某些变量被共享了,例如 controller 中有无 static 变量属性

再一个检查一下抛出来的异常是什么,可能是某些异常引起的数据没有保存成功。例如,有些时候数据格式(例如出现 null 值但数据表字段不允许null) 的问题不能保存成功

再一个,建议开启事务,样在出问题以后可以回滚,保障一致性

最后,业务逻辑一定要放在 Service 层面,不要放在 controller 中

2020-05-27 15:42

@simplehy

这里给出最完美的解决方案,可以在这里直接下载代码用在项目中:
http://free-download.jfinal.com/download/MyRenderFactory.zip

2020-05-27 15:11

这个没有提供代码,是无论如何也猜不到发生了什么的