jsp 如何获得更改后的session

是这样的,我在前台定义了一个JS方法,可以得到session的值,同时又访问后台将session中的某个值修改,那么我在前台js中得到的session值为什么不改变?前台... 是这样的,我在前台定义了一个JS方法,可以得到session的值,同时又访问后台将session中的某个值修改,那么我在前台js中得到的session值为什么不改变?
前台JS
//获取session的值,并且给页面赋值
function readSession(){
var data = '${sessionScope.macData}';//这里,获得session的值,是可以得到的。
//等同于<%=request.getSession().getAttribute("macData")%>
$('#content').html(data);
}
//页面调用方法,并定时执行获取session的方法
function changeData(){
//
setInterval('readSession()',500);
window.location = 'khxt/khzz.xhtml?to=saveData';
}
后台saveData 方法内容
//上面的方法参数没记住,只写内容了,用的struts1
/*** start*/
request.getSession(true).removeAttribute("macData");//每次访问都要清空session中的macData
StringBuffer sb = new StringBuffer();//定义session macData 对应的内容
for(condiion){
//这里大体的意思就是有多次循环,每次循环都会增加一个内容到session中
sb.append(tempData);
request.getSession(true).setAttribute("macData",sb.toString());
}
/*** end*/
我要实现的效果:
前台有一个按钮,功能就是检测局域网内的所有机器,我用的是artDialog,可以锁定在本页面
同时,需要每扫描一台机器就需要得到反馈的信息,并且更新在artDialog 中的弹出框中。
我现在做的方法是:增加了一个定时执行的JS方法,每隔500毫秒就执行一次,并且将session中的数据赋值到 弹出框中。
问题:
运行后,只能读到最初始的session值,更改后的怎么都读取不到。而且,定时执行的方法经过测试可以按时执行,action中DEBUG后也可以看到session中的macData 确实已经改变了,那么就可能是JS读取到session值并没有刷新,怎么才能在每次读取session值的时候得到最新的呢?
/***************************************************************
*求各位大侠伸出援助之手,事后会有更多积分赠送!
*******/
展开
 我来答
百度网友0231eae
2013-12-05 · TA获得超过206个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:128万
展开全部
1、首先解释一下你的疑问,为何取不到最新的session值。
javascript是无法获取服务器session中的值的。js只是脚本语言,session是jsp里的对象。
使用el表达式获取值,是在编译jsp的时候完成的。编译完成后,就发送到浏览器了。浏览器执行的html页面中的值是固定的。
function readSession(){
var data = "123"; //编译jsp的时候,el表达式获取值${sessionScope.macData}已经被替换成具体的值了

}
所以,以后无论多少次获取data,都是123。你可以在浏览器中右键查看生成的html页面,就明白了。
2、如何解决这个问题。

可以将macData的值,已json或xml或纯文本的方式发送给前台。使用ajax的方式获取。
这里假设你使用了json的方式, response.getWriter().print("{ macData: 具体的值 } ");

jquery代码:
function loadData(){
$.get("请求url",function(result){
$("#content").html(result.macData);

});

}
_若相守不离丶
2015-09-06 · TA获得超过116个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:85.6万
展开全部
你首先要通过 request.setAttribute 设置session的值,如果是servlet的话需要指向你的页面,如果是springmvc的话 在页面中直接获取就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
675372086
2015-08-08 · TA获得超过115个赞
知道答主
回答量:67
采纳率:0%
帮助的人:30.8万
展开全部
什么是所谓更改后,只要你没有关闭seession,几次获取拿到的都是同一个session
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zph999
2015-08-27 · TA获得超过129个赞
知道小有建树答主
回答量:254
采纳率:37%
帮助的人:56.3万
展开全部
1123
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4439a351d
2015-07-29 · 超过12用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:26.5万
展开全部
你干嘛不存到application中去呢不就取得 了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式