struts2 关于session我纠结的问题
登录时把用户信息放到session中了,ActionContext.getContext().getSession().put("user", user1);
然后有一个控制权限的filter和一个文件上传的servlet,现在问题出现了。在filter用下面的方法取user能取到
HttpSession session = ((HttpServletRequest)req).getSession();
User user = (User)session.getAttribute("user");
但是在上传文件那个servlet里去user取到的是空,用的方法是
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
断点一步一步跟的,就是取不到。最后我在struts里登录的代码改了一下改成下面的
ActionContext.getContext().getSession().put("user", user1);
ServletActionContext.getRequest().getSession().setAttribute("user", user1);
断点跟了 还是取不到,但在filter里能取到啊,而且在servlet和filter中取到的session都不是一个值,我也试着getSession(false)了,但是这样就
空指针了。。求助。。谁能告诉我why,据说csdn高手很多滴。。
------解决方案--------------------HttpServletRequest ?
------解决方案--------------------在你的filter里面,你有没有doChain()??所request和response继承往下转发?
------解决方案--------------------
原来是上传的问题。
------解决方案--------------------跟上传可能会有关系的
比如有的带Flash的上传文件插件,浏览器会为Flash新开一个Session,新开的Session里自然就没有登录信息了。这种时候必须通过别的途径指明登录用户身份
------解决方案--------------------
问题不就在这两个表单上吗。肯定哪里出问题了,并且是个不大引人注意的问题。
------解决方案--------------------
楼主考虑下:
1 网页如果使用了iframe/frameset技术,session就容易出问题。
2 上传的时候,form的编码方式是不一样的,Server端解析的时候,很难说不出问题。
3 如果禁用了Cookie,则Session要靠URL重写来实现,如果同时又是上传,则更难说不出问题。
------解决方案--------------------学习学习班