在登录action(我用的是动态action form)中,将一段字符写入session ,想通过他,在其他action中判断其值,来确定该用户的网页是否过期,可是在其他action中,他的值是null,如何在其他action中得到在某个action中设置的session值?
关键代码如下:
登录action中,DynaActionForm dyform=(DynaActionForm)form;
String aa=(String)dyform.get("password");
HttpSession session=request.getSession();
session("mmk",aa);
在这个action中,可以用String aaaq=(String)session.getAttribute("mmk");
System.out.print(aaaq);
看见写入的session值,比如"123"
然而在其他的action中,使用如下代码确得不到该值(该值为null)
DynaActionForm dyform=(DynaActionForm)form;
HttpSession session=request.getSession();
System.out.println(session.getAttribute("mmk"));
为什么?
struts-config.xml中这样写的<action path="/login" type="proj.LoginAction" name="formBean1" scope="session" validate="true" input="/error.jsp"/>
其中scrope换成request,结果一样session无效
关键代码如下:
登录action中,DynaActionForm dyform=(DynaActionForm)form;
String aa=(String)dyform.get("password");
HttpSession session=request.getSession();
session("mmk",aa);
在这个action中,可以用String aaaq=(String)session.getAttribute("mmk");
System.out.print(aaaq);
看见写入的session值,比如"123"
然而在其他的action中,使用如下代码确得不到该值(该值为null)
DynaActionForm dyform=(DynaActionForm)form;
HttpSession session=request.getSession();
System.out.println(session.getAttribute("mmk"));
为什么?
struts-config.xml中这样写的<action path="/login" type="proj.LoginAction" name="formBean1" scope="session" validate="true" input="/error.jsp"/>
其中scrope换成request,结果一样session无效
没有见过这样的写法,应该是session.setAttribute("mmk", aa);
另外看看是不是由于你的容器session失效时间设置的太短了。
没见过这么写的
sorry我是这样写的session.setAttribute("mmk", aa);
失效时间设置的是20分钟,
session-config>
<session-timeout>20</session-timeout>
</session-config>
<session-timeout>20</session-timeout>
</session-config>
而且可以从输出String aaaq=(String)session.getAttribute("mmk");
System.out.print(aaaq);
中看见,当时的mmk中值是ttt123而在另一个跳转页面的action中mmk就是null了,
试试第一个Action中get一下sessionId
第二个Action中也get一下sessionId,然后比较一下是否相同
System.out.println(session.getAttribute("mmk"));读session的值时,系统自动生成了一个新空session,名为mmk,值当然为null了,主要怀疑上面部句的容器request使用有误,可是我不知如何写那2句。
我个人认为,session在设置后,只要不退出应用(关闭IE),不重写session,session值应该是全局可用的(各个jsp,action中均可用,并且是不变的,是这样的吗?
HttpSession session=request.getSession(false);
试一下
如果在整个会话周期都需要访问的信息你可以放在session,如果仅仅是页面之间的数据传递没有必要放在session中!
if(session==null){
System.out.println("session lose");
}试试这个会出现么?如果出现的话,找一下你有没有地方有代码把session清空或是扔掉了
System.out.println("session lose");
}
---------------------------------
无输出,说明session不是空,如何把现在的20多session内容全部输出??????我想看看
如何在其他action中得到在某个action中设置的session值?
比如在A action中设置了session("asd","i am session");
在B action中如何得到名为asd,内容是i am session的session
在登录action中设置2个session ,A100和mmk,在登录通过的界面M中,使用<a href="az.jsp">主机</a> ,在az.jsp中使用<%String bb=(String)session.getAttribute("A100") System.out.println(bb);%>可以得到A100的值,而在界面M中,使用<a href="ap.do>配件</a>在点击《配件》连接时,希望执行一个.do操作,在该操作的响应处理action中,通过判断mmk的值来确定是否过期,可是无论我如何做,A100和mmk在这里使用上面方法得到的值都是空null,不解???
----------------------------------------------------------------------------------
不知道lz在说什么
设置
String user = "123";
request.getSession().setAttribute("userName",user);取得
(String)request.getSession().getAttribute("userName");