session是存储在服务器上的,js无法直接获取session中的数据,但是可以使用服务器动态生成的内容携带session中的数据给js使用,下面介绍具体方法。
利用动态网页语言生成的页面携带数据
1、动态网页语言包括jsp,php,asp等。以jsp为例介绍。
2、以SpringMvc中的controller为例,在后台向session中设醅呓择锗置一个值。你也可以用Servlet或者struts2等,只要获取到session 醑穿哩侬对象,然后设置进去值就行。至于这个示例工程的全部代码就不放了,理解本文的思路就行,SpringMvc怎么用不懂的可以去网上查。 @RequestMapping(value = "home", method = RequestMethod.GET) public String home(HttpSessionsession) { session.setAttribute("name", "Tom"); return "home"; }
3、用这句<%=session.getAttribute("name&孥恶膈茯quot;) %>来获得session中的值。<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>title</title></head><body> <%=session.getAttribute("name") %></body></html>
4、在界面上查看,得到正确的值了。
5、我们把值放入一个输入框里面,然后用js获取它 <input id="name" value="<%=session.getAttribute("name") %>"> <script> var name = document.getElementById("name").value; alert(name); </script>
6、打开页面,发现弹出一个警告框,警告框里面是session中的值。
利用ajax
1、在刚才的controller基础上增加一个接受ajax请求的方法,在java后台从session中取出数据返回。 @ResponseBody @RequestMapping(value = "getName", method = RequestMethod.GET) public Object getName(HttpSession session) { return session.getAttribute("name"); }
2、 $.ajax({ url: 'getName.do', success: function (data) { alert(data) } })
3、重启应用,再次访问,发现同样能获得name数据