日期:2014-05-18  浏览次数:20812 次

关于servlet 和action 中的获取seession中的属性的 问题;
今天做了个测试; 在struts2 中的action实现登陆;

可是在 文件上传的servlet 总是不能获取到session 中的 user 对象;

代码如下;


UserAction---登陆;---------------------

    ActionContext ac = ActionContext.getContext();
            Map session = ac.getSession();
            session.put("user", userList.get(0));

其中userList 是根据 用户名和密码 查找的user 集合;


在我的Servelet 中是这样的    User user = (User) request.getSession().getAttribute("user");
        System.out.println(user.getId());

可是总是报告空指针啊;  是不兼容的问题吗; 是封装的和原来的不一样导致吗那么我想在servlet 中获取 session中的user 对象要怎么获取啊??
难道在action 中的所有用到session 的地方都改为使用没有包装过的session 吗感觉好麻烦.
谢谢



Servlet session action

------解决方案--------------------
想用封装的就用SessionAware接口吧!
------解决方案--------------------
在使用ActionContext时有一点要注意: 
不要在Action的构造函数里使用ActionContext.getContext(),因为这个时候ActionContext里的一些值也许没有设置,这时通过ActionContext取得的值也许是null;
用ServletActionContext就不会。。