將登入等資訊儲存到session中和退出session
阿新 • • 發佈:2019-02-08
做專案時,可能會將某些資訊儲存在session中,如登入等資訊,這樣方便在某些頁面使用這些儲存的資訊。
要想儲存這些資訊,需要建立一個類,該類裡面定義需要儲存的變數等資訊,當登入後就通過new一個該類來儲存登入等資訊,然後放在session中,需要用到這些資訊時直接用例如EL表示式等取出來就OK了。例子如下:
1.儲存使用者資訊的類
2.在Controller中儲存登入等資訊<span style="font-size:14px;"><span style="font-family:Microsoft YaHei;">public class WSessionInfo implements java.io.Serializable {<span style="white-space:pre"> </span> private String id;// 使用者ID private String loginname;// 登入名 private String name;// 姓名 private String ip;// 使用者IP private String userimg; //圖片 private RegisterUser user; //使用者註冊資訊 private String usertype;//使用者型別 private String chengsid;//城市編號 private String cityname;//城市名 private List<String> resourceList;// 使用者可以訪問的資源地址列表 private List<String> resourceAllList; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getChengsid() { return chengsid; } public void setChengsid(String chengsid) { this.chengsid = chengsid; } <span style="white-space:pre"> </span>...... }</span> </span>
3.在頁面使用<span style="font-size:14px;"><span style="font-family:Microsoft YaHei;"><span style="white-space:pre"> </span>@RequestMapping("/login") @ResponseBody public Json login(Account user, HttpSession session) { ...... WSessionInfo sessionInfo = new WSessionInfo();//儲存使用者資訊的類 sessionInfo.setId(loginUser.getId());//為類裡面的屬性賦值,即把登入資訊儲存在這個類中 sessionInfo.setLoginname(loginUser.getLoginname()); sessionInfo.setUsertype(loginUser.getUsertype()); sessionInfo.setUser(regUser); session.setAttribute(GlobalConstant.SESSION_WAP_INFO, sessionInfo);//將資訊儲存在session中 } </span></span>
<span style="font-size:14px;"><span style="font-family:Microsoft YaHei;"><%@page import="com.wxm.framework.constant.GlobalConstant"%> <%@page import="com.wxm.pageModel.base.WSessionInfo"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="ctx" value="${pageContext.request.contextPath}"/> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; <span style="white-space:pre"> </span><strong>WSessionInfo sessionInfo = (WSessionInfo) request.getSession().getAttribute(GlobalConstant.SESSION_WAP_INFO);//獲取儲存的登入等資訊</strong> if(sessionInfo!=null){//判斷儲存的資訊是否為空,即判斷使用者是否登入 response.sendRedirect("/bd/wap/ar.jsp");//如果使用者登入後就跳轉到某個頁面 } %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <base href="<%=basePath%>"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <title>登入</title> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> </head> <body> </body> </html> </span></span>
4.退出session
<span style="font-family:Microsoft YaHei;"><span style="white-space:pre"> </span>@RequestMapping("/logout")
@ResponseBody
public Json logout(HttpSession session) {
<span style="white-space:pre"> </span>Json j = new Json();//這個類是儲存成功或失敗的資訊
if (session != null) {
session.invalidate();//呼叫session的invalidate()方法,將儲存的session刪除
}
j.setSuccess(true);
j.setMsg("退出登入成功!");
return j;
<span style="white-space:pre"> </span>}</span>