1. 程式人生 > >後臺設定Cookie值,前臺進行獲取

後臺設定Cookie值,前臺進行獲取

                        後臺設定Cookie值,前臺進行獲取

 

 

通過cookie取得使用者的個性化資訊
注意事項:1.中文的存在,需要進行utf-8的編碼,之後再進行解碼即可,避免亂碼。
之所以 有時會用到  cookie.setPath("/"); 語句,是因為當你的SpringMVC的controller類上面有設定@RequestMapping("/User")
這樣子,所以才會用到,沒有就忽略它。
設定好cookie的儲存時間
cookie.setMaxAge(60 * 60 * 24);

@RequestMapping("login")
	public String goto_login(HttpServletResponse response, HttpSession session, T_MALL_USER_ACCOUNT user,
			HttpServletRequest request, ModelMap map) {

		// 登陸,遠端使用者認證介面
		T_MALL_USER_ACCOUNT select_user = loginMapper.select_user(user);

		if (select_user == null) {
			return "redirect:/login.do";
		} else {
			session.setAttribute("user", select_user);

			// 在客戶端儲存使用者個性化資訊,方便使用者下次再訪問網站時使用
			try {
				Cookie cookie = new Cookie("yh_mch", URLEncoder.encode(select_user.getYh_mch(), "utf-8"));
				// cookie.setPath("/");
				cookie.setMaxAge(60 * 60 * 24);
				response.addCookie(cookie);

				Cookie cookie2 = new Cookie("yh_nch", URLEncoder.encode("周潤發", "utf-8"));
				// cookie.setPath("/");
				cookie2.setMaxAge(60 * 60 * 24);
				response.addCookie(cookie2);
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

		return "redirect:/index.do";
	}

有兩種方法獲取cookie的值,一種是用伺服器獲取客戶端的資料,然後把資料再返回給客戶端。另一種是客戶端直接獲取(推薦這種,比較方便,而且如果選擇服務端的話,每次只能返回一個頁面,不實用)。

第一種(不推薦):
 

	@RequestMapping("index")
	public String index(HttpServletRequest request, ModelMap map) {

		
		 String yh_mch = ""; 
		 Cookie[] cookies = request.getCookies(); 
		 if(cookies != null && cookies.length > 0) {
			 for (int i = 0; i <cookies.length; i++) {
				 String name = cookies[i].getName(); 
				 if(name.equals("yh_mch")) {
					 yh_mch = cookies[i].getValue();
				 }
			 } 
		 }
	      map.put("yh_mch", yh_mch);
		
		return "index";
	}

第二種: 通過客戶端cookie取得使用者的個性化資訊
decodeURIComponent是js自帶的utf-8解碼的函式
yh_nch=“你好”;yh_mm="123456"
獲取的cookie字串會出現 “空格”和 “;”,需要進行正則匹配,首先空格去除,然後再以 “;”進行分割,分割的陣列再進行“=”分割獲取所需要的值。yh_nch=“你好”

<script type="text/javascript">
	$(function (){
		var yh_mch = getMyCookie("yh_nch");
		$("#show_name").text(decodeURIComponent(yh_mch));
	});
	
	function getMyCookie(key){
		var val = "";
	
		// 對cookie操作
		var cookies = document.cookie;
		cookies = cookies.replace(/\s/,"");
		var cookie_array = cookies.split(";");
		for(i=0;i<cookie_array.length;i++){
			// yh_mch=lilei
			var cookie = cookie_array[i];
			var array = cookie.split("=");
			if(array[0]==key){
				val = array[1];
			}
		}
		
		return val;
	}
</script>