我试图通过实现 SessionAware
从我的拦截器中访问 session 对象接口(interface)(我已经实现了 setSession
方法),但我无法以这种方式获取我的 session 对象。
然后我尝试了ActionContext.getContext().getSession()
并且我能够获得 session ,但我不知道,但它只是第一次在每个浏览器中为每个用户显示为空,然后在调用另一个操作时填充。
我认为 session 有问题。为什么它只是第一次给我一个空 session ?它只有在第一次给空 session 后才设置一些东西吗?
如果是这种情况,那么每个人都会在他们的第一个请求中显示为访客,然后在他们的第二个请求中显示为用户名,然后继续。
还是我以错误的方式获得 session ?
我看到了在拦截器中获取 session 的代码,但这对我不起作用,因为它找不到常量 HTTP_REQUEST
.
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
HttpSession session = request.getSession(true);
Object user = session.getAttribute(Constants.USER_HANDLE);
关于解决任何问题的任何建议?
我忘了提到的事情 - 我的网站是一个安全网站(https),所以如果用户没有登录,它不会让他进入网站,如果他登录了,至少他的用户名应该在 session 中.不应该吗?
最佳答案
我有一个拦截器,它也将 session 作为 map 抓取。你有没有尝试过这样的事情?这对我有用。
public String intercept( ActionInvocation actionInvocation ) throws Exception {
Map session = actionInvocation.getInvocationContext().getSession();
关于struts2 - 拦截器中的 Struts 2 Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040331/