1. 程式人生 > >session和Cookie的介紹和應用

session和Cookie的介紹和應用

丟失 服務器和客戶端 null 查看 ges 問控制 用戶 lose 到你

Session:在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄後,服務器將終止該會話。Session 對象最常見的一個用法就是存儲用戶的首選項。例如,如果用戶指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。有關使用 Session 對象的詳細信息,請參閱“ASP 應用程序”部分的“管理會話”。註意 會話狀態僅在支持 cookie 的瀏覽器中保留

Session應用:

1.設置session

java裏面,可以給session添加自定義key,value(HttpServletRequest request 作為方法的輸入參數)

HttpSession session = request.getSession();
session.setAttribute("usrid", userid);

2.取得session

jsp裏面可以 這段來源自CSDN一個討論貼,自己時間後並沒有成功,報錯是session is undifiened,後來又找了資料說 javascript不提供訪問session的功能。session只能通過動態程序操作,可以使用ajax給javascript返回值。

session.getAttribute("username");

java裏面可以 (HttpServletRequest request 作為方法的輸入參數)

HttpSession session = request.getSession(); 
session.getAttribute("usrname");

一個使用session進行超時訪問控制的實例

(1)LoginServlet.java 在登錄時,設置session屬性

技術分享圖片
 public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws IOException, ServletException {  
         
        String userid = request.getParameter("username");
        String pwd = request.getParameter("password");
        
        JSONObject json = new JSONObject();  
        
        AdminDAO adminDAO = new AdminDAO();
        List<Admin> userList = adminDAO.findByProperty("usrid", userid);

        if(userList.get(0).getPassword().equals(pwd)){
             json.put("success", true);
             HttpSession session = request.getSession();
             session.setAttribute("usrid", userid);
        } else {
             json.put("success", false);
             json.put("meg", "sorry");
        }          
                 
        PrintWriter pw = response.getWriter();   
        pw.print(json.toString());  
        pw.close();  
    }  
技術分享圖片

(2)HomePage.java 在跳轉到相關頁面時,獲取並判斷session

技術分享圖片
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        JSONObject json = new JSONObject();  
       
        HttpSession session = request.getSession(); 
        if(session==null||session.getAttribute("usrid")==null)
        {
             json.put("success", false);
             json.put("meg", "Time out,please login again!");
        }
        else
        {
           ...
            json.put("jsonArray", array);     
        }    
        
           
        PrintWriter pw = response.getWriter();   
        pw.print(json.toString());  
        pw.close();
    }
技術分享圖片

(3)homePage.html 頁面根據(2)的返回值判斷是否執行跳轉操作

技術分享圖片
$(document).ready(function(){
            $.ajax({
                url: "HomePageServlet",
                type: "post",
                dataType: "json",
                success: function(data) {        
                if (data["success"]) {
                      ...
                } 
                else
                {
                    alert(data["meg"]);
                    window.location.href="login.html";
                }                            
            }
                
        });
    });


Cookie
1. 什麽是Cookie
* Cookie是HTTP協議的規範之一,它是服務器和客戶端之間傳輸的小數據。
* 首先由服務器通過響應頭把Cookie傳輸給客戶端,客戶端會將Cookie保存起來。
* 當客戶端再次請求同一服務器時,客戶端會在請求頭中添加該服務器保存的Cookie,發送給服務器。
* Cookie就是服務器保存在客戶端的數據!
* Cookie就是一個鍵值對!!!
2. Cookie規範
* Cookie通過請求頭和響應頭在服務器與客戶端之間傳輸;
* Cookie大小限制在4KB之內;
* 一臺服務器在一個客戶端最多保存20個Cookie;
* 一個瀏覽器最多可以保存300個Cookie;
雖然Cookie規範是如此,但在今天,瀏覽器廠商的競爭異常激烈,所以多少會超出Cookie規則的限制。但也不會超出過多!
Cookies是一種能夠讓網站服務器把少量數據儲存到客戶端的硬盤或內存,或是從客戶端的硬盤讀取數據的一種技術。Cookies是當你瀏覽某網站時,由Web服務器置於你硬盤上的一個非常小的文本文件,它可以記錄你的用戶ID、密碼、瀏覽過的網頁、停留的時間等信息。當你再次來到該網站時,網站通過讀取Cookies,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。 從本質上講,它可以看作是你的身份證。但Cookies不能作為代碼執行,也不會傳送病毒,且為你所專有,並只能由提供它的服務器來讀取。保存的信息片斷以“名/值”對(name-value pairs)的形式儲存,一個“名/值”對僅僅是一條命名的數據。一個網站只能取得它放在你的電腦中的信息,它無法從其它的Cookies文件中取得信息,也無法得到你的電腦上的其它任何東西。 Cookies中的內容大多數經過了加密處理,因此一般用戶看來只是一些毫無意義的字母數字組合,只有服務器的CGI處理程序才知道它們真正的含義。 由於Cookies是我們瀏覽的網站傳輸到用戶計算機硬盤中的文本文件或內存中的數據,因此它在硬盤中存放的位置與使用的操作系統和瀏覽器密切相關。在Windows 9X系統計算機中,Cookies文件的存放位置為C:WindowsCookies,在Windows NT/2000/XP的計算機中,Cookies文件的存放位置為C:Documents and Settings用戶名Cookies。 硬盤中的Cookies文件可以被Web瀏覽器讀取,它的命令格式為:用戶名@網站地址[數字].txt。如筆者計算機中的一個Cookies文件名為:ch@163[1].txt。要註意的是:硬盤中的Cookies屬於文本文件,不是程序。





參考來源:百度百科
https://www.cnblogs.com/wxwx/p/5481171.html

session和Cookie的介紹和應用