在網上查找了很多關於jQuery獲取session都不可得,如果大家有更好的方式,歡迎留言
這里是使用jQuery發送Ajax請求到后台獲取session
jsp中沒有代碼
js代碼
<script type="text/javascript">
//這里是一個私有方法,用來獲取項目根路徑,這個方法在js的最底部,有興趣的可以查看 var basePath = getRootPath(); $(function(){
//使頁面剛加載完成就去取得session getSession(); });function getSession(){ $.ajax({ url:basePath + "/getSession", type:"GET", async:false,//false代表只有在等待ajax執行完畢后才執行 success:function(result){
//這里在控制台將session數據打印出來 console.log(result);
//如果要取list中具體的數據,可以點其下的內容依次取得,具體的可以看控制台打印的內容,那個層次很清晰 /* console.log(result.data); console.log(result.data.userSession); console.log(result.data.userSession[0]); */ } }); } /** * 獲取項目根路徑,如: http://localhost:8083/ssm-dynamic * @returns */ function getRootPath(){ //獲取當前網址,如: http://localhost:8083/ssm-dynamic/jsp/jsonList.jsp var curWwwPath=window.document.location.href; //獲取主機地址之后的目錄,如: ssm-dynamic/jsp/jsonList.jsp var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); //獲取主機地址,如: http://localhost:8080 var localhostPaht=curWwwPath.substring(0,pos); //獲取帶"/"的項目名,如:/ssm-dynamic var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); return(localhostPaht+projectName); } </script>
controller代碼
存儲session的代碼
@RequestMapping(value="/",method=RequestMethod.GET) public String sayHello(HttpSession session){ List<User> users = loginService.selectAll(); session.setAttribute("users", users); return "login"; }
獲取session的代碼
//指定url地址,與上述的Ajax發送請求的url要一致;指定請求方式,與上述的Ajax請求的type要一致
@RequestMapping(value="/getSession",method=RequestMethod.GET)
//加@ResponseBody是為了可以返回json數據 @ResponseBody public Msg getSession(HttpSession session){
//取得之前添加的session數據 List<User> users = (List<User>) session.getAttribute("users");
//將session的數據放在自定義的msg類中,下面會展示該類 return Msg.success().add("userSession", users); }
Msg.java
import java.util.HashMap; import java.util.Map; /** * 通用的返回類 * @author ws * */ public class Msg { /** * 狀態碼 * 100:成功 * 200:失敗 */ private int code; /** * 提示信息 */ private String msg; /** * 用戶要返回給瀏覽器的數據 */ private Map<String, Object> data = new HashMap<String,Object>(); public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Map<String, Object> getData() { return data; } public void setData(Map<String, Object> data) { this.data = data; } /** * 處理成功 * @return */ public static Msg success(){ Msg msg = new Msg(); msg.setCode(100); msg.setMsg("處理成功"); return msg; } /** * 處理失敗 * @return */ public static Msg fail(){ Msg msg = new Msg(); msg.setCode(200); msg.setMsg("處理失敗"); return msg; } /** * 以鍵值對添加數據 * @param key * @param value * @return */ public Msg add(String key, Object value) { this.getData().put(key, value); return this; } }
這樣,在瀏覽器控制台(一般按F12即可打開)就可以看到效果了

至此大功告成
大家如果有可以不適用ajax的方式即可取得session,歡迎留言,共同探討
