请问在service层获取请求响应和session对象有什么简便方法嘛?

请问在service层获取请求响应和session对象有什么简便方法嘛?谢谢

评论区

macaque

2017-10-17 17:44

ThreadLocal

liujh

2017-10-17 17:48

@macaque 这个我知道 就不知道 jfinal 有没有封装这样的工具

JFinal

2017-10-17 17:49

session 是 web 层的东西,service 要做得纯粹不要与 web 层的东东耦合

在控制层从 session 中获取所需要的参数以后,再调用 service 层,从而避免在 service 中对 session 依赖

macaque

2017-10-17 17:49

@liujh 我了解到的应该是没有,得自己写

liujh

2017-10-17 18:00

@JFinal 像Struts2跟springMVC都有封装这样的工具 这是为什么了? 我们不都提倡责任分离嘛

JFinal

2017-10-17 18:09

@liujh 你是指 struts2 中的 ActionContext.getContext().getSession() 这种用法吧,在 jfinal 中用一个 ThreadLocal 配合一个全局拦截器很容易:
public class Context implements Interceptor {
private static final ThreadLocal TL = new ThreadLocal();

public class intercept(Invocation inv) {
TL.set(inv.getController().getSession());
try {
inv.invoke();
}finally {
TL.remove();
}
}

public static Sessoin getSession() {
return TL.get();
}

}

最后配置这个为全局拦截器即可:
public void configInterceptor(Interceptors me) {
me.add(new Context());
}

然后你就可以在 service 中这样用来了:
Session session = Context.getSession();

liujh

2017-10-17 18:17

@JFinal 谢谢 刚加入 JFinal大家庭 不吝赐教

JFinal

2017-10-17 20:31

@liujh 记得搞定后回来分享一下

热门反馈

扫码入社