首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
如何随服务器启动时同时启动action?
libofei
2018-04-04 19:24
servlet可以通过在web.xml中配置或者注记的方式实现随服务器启动时一起启动,jfinal框架中的action如何实现这样的功能?
项目:
JFinal
评论区
JFinal
2018-04-04 21:57
在 YourJFinalStart 中添加下面这样的一个方法:
public void afterJFinalStart() {
这里写上你的随机启动代码
}
上面的 afterJFinalstart() 方法会在 jfinal 启动完成后回调一次
回复
libofei
2018-04-04 22:14
@JFinal
您说的是JFinalConfig里的afterJFinalStart方法吗,如果需要Controller在启动时初始化一些东西怎么办呢?
回复
JFinal
2018-04-04 22:22
@libofei
用拦截器
回复
libofei
2018-04-04 22:39
@JFinal
好的,明白了
回复
JFinal
2018-04-04 22:44
@libofei
你是老用户了啊,理应这些应该都熟悉的
回复
libofei
2018-04-04 22:59
@JFinal
有些功能很久没用,有些忘了
回复
libofei
2018-04-04 23:20
@JFinal
刚才没有表达清楚,拦截器是在每个Controller方法调用前后做拦截,我想实现的效果是,tomcat启动时,Controller可以自动初始化一些过程。
回复
JFinal
2018-04-04 23:32
@libofei
controller 是被请求触发的,而 tomcat 启动时无法触达 controller
不知道你的需求什么? 感觉这个问题的方向就有问题
回复
JFinal
2018-04-04 23:34
@libofei
在 Controller 的构造方法中添加初始化代码可否?
还是说对于一个 controller 类来说,只执行一次一次初始化操作,那么添加 staitc 块就可以解决,例如:
public IndexController extends Controller {
static {
这里是要初始化的代码;
}
}
回复
libofei
2018-04-04 23:40
@JFinal
因为过去在servlet编程中,有时会遇到,servlet里有些过程必须在tomcat启动时就完成预处理,servlet调用时就直接取用过程处理的结果了,而并非在servlet调用时再执行。controller初始化时做能解决一部分问题,但还是跟tomcat启动时处理不太一样,毕竟那属于预处理过程。
回复
JFinal
2018-04-04 23:46
@libofei
在 controller 中添加 init() 这种预处理方法,然后用一个全局拦截器调用一下就可以
本质就是一个回调的问题,servlet 也是容器回调的它的预处理方法
回复
libofei
2018-04-04 23:57
@JFinal
没太理解,全局拦截器不只是拦截的范围变大了吗,触发拦截器不是还得靠调用controller的方法?init()在哪里调呢?
回复
libofei
2018-04-05 11:13
@JFinal
我希望的效果是能自动触发,不止是在controller执行前触发
回复
JFinal
2018-04-05 16:32
@libofei
serlvet 的 init() 方法也是需要被某个东东回调的,前面介绍的拦截器调用 Controller 的 init() 没有本质区别
现在你最需要说清楚的是这个 Controller 中的 init() 是要调用几次? 是对每个 Controller 对象创建时调用一次,还是对所有同一个 Controller 所以生成的对象只调用一次?
这个决定了拦截器回调的策略,初始化回调的问题没有多少可研究的,找个合适的办法回调一下就好
回复
libofei
2018-04-05 17:22
@JFinal
init()调用一次就行,对一个 Controller对象调一次就行,不过希望Controller对象可以在tomcat启动时就创建
回复
发送
我要反馈
热门反馈
扫码入社
public void afterJFinalStart() {
这里写上你的随机启动代码
}
上面的 afterJFinalstart() 方法会在 jfinal 启动完成后回调一次