2016-10-11 18:00
web.xml 中还是正常按 jfinal 的配置,配置上 JFinalFilter,然后再创建一个可访问到的 Controller,假定访问到这个 Controller.index() 方法的路由是 "/"
接下来做一个 MyHandler,将所有请求转发给前面的 Controller.index();
class MyHandler extends Handler {
public void handle(target, req, res, isHandled) {
// 先将 target 存起来,可在 controller 中通过getAttr("target")得到
req.setAttribute("target", target);
// 直接转发到 Controller.index();
next.handle("/", req, res, isHandled);
}
}
2016-10-11 16:01
@innerac 看具体场景,例如,你要用的这个功能本身就需要先启动一个服务,打开了监听端口之类这样才能工作,那就是要开启服务,如果只是使用 spring 的一些常规 API就不需要开服务,例如 factory.getBean(name) 这种从 spring 中获取 bean 是不需要开启服务的
2016-10-11 13:04
@xRhbN 手册才 30 多页,而且大部分是代码示例,极其少量的文字,一个小时内能看完,所以一定要仔细看完,节省很多时间,很划算
Db.tx(...) 更好控制,return false 的时候可以控制回滚
2016-10-11 12:13
@xRhbN 我习惯于在业务层用 Db.tx(...) 来做事务,对动态语言熟悉的开发者会喜欢这种用法
2016-10-11 10:17
@FS心情 本来已经上了的,最近有个比较好的创新在做,根本停不下来,所以这个新开页面优先级调了一下
灵感和创新是很微妙的,稍纵即逝,所以来的时候,一定要先抓住
2016-10-10 15:31
对于常用的数据库操作功能所使用的 sql 都有封装,例如 model.save()、model.update() 、model.delete()、model.findById(idValue) 等等
由于查询可能是千变万化、个性化的,所以为用户留下了传入 sql 的接口,例如这种 sql,jfinal 就完全不知道你会这么用,也不可能替你封装: find("select a.x, a.y, b.z, c.* from ta as a inner join tb as b on a.id=b.aid right join tc as c on b.cid = c.id where a.x =? and b.z =?", ...)