在SessionListener中想要拿到HttpServletRequest,因为是和struts2整合,所以想使用如下代码获取:
ServletActionContext.getRequest(),但执行这行代码的时候会偶尔报空指针,注意是偶尔,不是经常!
稍深入一点发现 实际上是 ActionContext.getContext() 的结果已经是null,
很不能理解的就是 Session,Request对象究竟谁先创建,个人倾向于是request,因为是通过 request.getSession(true)才创建了Session,这时才促发的 SessionListener中的相关方法,按理说 如果不能通过struts辅助类拿到request就应该是一直都拿不到,但有时候能获取到,有时候不能就有些让人费解了.
望各位大大能给一个解决方法~ 就是如果是 request先创建, 那么我如何在 sessionListener中获得创建本 session 的request??
(因为我要获取request中的一些信息,用于初始化 session .. )
不胜感激~
[quote]
谢谢回复,但我问题的意思是 第一个request和session,哪个先创建..
[/quote]
第一个request先创建。
request.getSession(true);
这个应该不是创建一个session,而是拿到一个session
个人倾向先创建了session后创建了request
没有研究过源码,不敢肯定
但从他们的生命周期来看
Context是启动服务就创建了
session是开启一个会话的时候创建的
request请求发出创建
而第一发出请求的也意味着开启一个会话,到底先创建request还是session
还得去看源码啊
session是会话开始时就创建的。request只是每次请求的。