已解决:在js获取不到session问题

  • Post author:
  • Post category:其他




  • js获取不到session的问题:

	var name = '<%=session.getAttribute("name")%>';
	alert(name);

这里直接alert了<%=session.getAttribute(“name”)%>,哈哈哈哈卧槽,太真实了。

原因:<%=%>的方式是表示中间的代码为后台代码,不是在js中获取后台变量的值,而且这个后台代码是由后台页面对象执行,然后用结果替换<%=%>后和html代码一起发送到前台。(<%%>里面的代码根本没有到达后端给servlet执行)

明白原理之后,在js文件中这种方式失败应该是可以理解的了,js文件是由浏览器输出html时发现js文件节点后才加载的,那时后台页面对象的生存期已经结束(html代码发送后后台page对象就析构了),当然无法执行后台代码,所以js文件中不可能支持这种方式。(后端生命周期已经结束了,js属于浏览器端,浏览器端是不能获得到服务器端的对象的,只有Java和JSP文件能够获得)。

解决方法:用ajax拿吧。为什么ajax就能够执行后端呢?因为ajax重新用Url请求了一遍后端程序。



版权声明:本文为qq_33459121原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。