1. 程式人生 > >將登入等資訊儲存到session中和退出session

將登入等資訊儲存到session中和退出session

做專案時,可能會將某些資訊儲存在session中,如登入等資訊,這樣方便在某些頁面使用這些儲存的資訊。

要想儲存這些資訊,需要建立一個類,該類裡面定義需要儲存的變數等資訊,當登入後就通過new一個該類來儲存登入等資訊,然後放在session中,需要用到這些資訊時直接用例如EL表示式等取出來就OK了。例子如下:

1.儲存使用者資訊的類

<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>
2.在Controller中儲存登入等資訊
<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>
3.在頁面使用
<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>