怎么用session保存用户登录信息,在所有的servlet中都能获取到session中的值,我试过,输出session的Id,

在不同的servllet中得到胡Id不同,获取方法:HttpSession s = request.getSession(false);
输出Id不同。。

通过servlet这样获取session对象
HttpSession session = request.getSession();
然后通过session存入你要的值。
session.setAttribute(“起的名字”, 要存入的值);
最后通过session取出来就行可以了。
session.getAttribute((“起的名字");追问

哥。。。。我就是这样的。。

追答

那就没有问题啊,你在仔细的检查,检查。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-06
session是保存会话信息,就是因为每一个会话有自己的id,所以可以往里面写用户信息..
第2个回答  2012-03-06
HttpSession session = request.getSession();
// 设置
session.setAttribute("id", id);

// 获取
String name = (String)session.getAttribute("id");追问

我的情况时这样的:
servletA:HttpSession session = request.getSession(); session.setAttribute("id", id);
servletB:HttpSession session = request.getSession(false); session.getAttribute("id");得到的值正确
servletC:HttpSession session = request.getSession(false); session.getAttribute("id");得到的值为空null;
B和C的区别就是A跳到B,而每有跳到C;

追答

跳不跳根本不影响。只要你设置到session里面,其他地方就可以获取到。

追问

我也是这么想的,就是获取不到,两个的Id也不一样。。,我输出获得的session事了下。Id不同。。。

追答

检查你其他的业务逻辑吧,session这块肯定没有问题。
id不同你看看是不是多次set了。
至于后面又获取的值为null,可能是session过期或被清空了。
你好好检查别的地方吧。

追问

这是不可能的,因为我刚开始做,刚开始用session,只有一个地方set的,没有用remove,至于session的生存周期,我一直都没动它,没在web。xml中设置过

追答

如果是没有任何的逻辑,那就更不可能了。
你所谓的id不一样,是怎么不一样?你设置一个12345。打印出来是什么呢?

追问

我System.out.println(session.getId());这输出的Id不同

追答

你用的什么应用服务器?tomcat?

追问

tomcat6.0

追答

现在不管传不传值。别的你都不要写。
你就在三个Servlet中输出这个:
HttpSession session = request.getSession();
System.out.println(session.getId());

难道也不一样?

追问

我试了,还是不一样呀。。。。急求呀。。

追答

真的很想知道你怎么写的,能实现打印不同的session。
这种问题一般人还真是写不出来,等高手来解答吧。

追问

在页面跳转的过程中有个超链接,是不是,他把session丢了

追答

不是在Servlet里面么。和超链接没有关系。只要是同一个工程。同一个应用服务器,不会有问题的。你直接访问三个servlet呢?
比如:http://localhost:8080/app/ServletA

本回答被提问者采纳
相似回答