Session

##JSP
    
    1. 概念:
        * Java Server pages:java服務器端頁面
            * 能夠理解爲:一個特殊的頁面,其中既能夠直接定義html的標籤,又能夠定義java代碼
            * 用於簡化書寫!
    2.原理
        * JSP本質上就是一個Servlet
    3. JSP的腳本: JAVA定義JAVA代碼的方式:
        1. <% 代碼 %>:定義的java代碼,在service方法中。service方法中能夠定義什麼,該腳本中就能夠定義什麼
        2. <%! 代碼 %> :定義的java代碼,在jsp轉換後的java類的成員位置。
        3. <%= 代碼 %> :‘=’至關於輸出語句,定義的java代碼,會輸出到頁面上。輸出語句中能夠定義什麼,該腳本中就能夠定義什麼
    4. JSP內置對象:
        * 在jsp頁面中不須要去建立獲取,就能夠直接使用的對象
        * jsp一共有9個內置對象。
        * 今天學習:
            * request
            * response
            * out:字符輸出流對象,能夠將數據輸出到頁面上。和response.getWriter()相似
                * response.getWriter()和out.writer()的區別:tomcat給客戶端作出響應以前,會先去找response的緩衝區,再去找out的緩衝區。out在定義的位置輸出,而response先於out輸出
                
##Session
    1. 概念:服務器端會話技術,再一次會話的多起請求間共享數據,將數據保存在服務器端的對象中。HttpSession
    2. 快速入門:
        1. 獲取HttpSession對象:
            request.getSession()
        2. 使用HttpSession對象:
            getAttribute()
            setAttribute()
            removeAttribute()
    3. 原理
        * Session的實現是依賴於Cookie 的
    4.細節:
        1. 當客戶端關閉後,服務器端不關閉,兩次獲取的session是同一個嗎
            * 默認狀況下不是(客戶端關閉,cookie關閉,沒有對應的cookie 頭,session是依賴於cookie的)
            * 指望客戶端關閉後,session也能相同。
                1. 建立cookie,鍵爲JSESSION    Cookie c = new Cookie("JSESSION",session.getId());
                2. 設置cookie的最大存活時間 c.setMaxAge(60 * 60);
                                            response.addCookie(c);
        2. 客戶端不關閉,服務器端關閉,兩次獲取的session是同一個嗎
            * 不是同一個,可是要確保數據不丟失
                * session的鈍化
                    * 在服務器正常關閉以前,將session對象序列化到硬盤上
                * session的活化
                    * 在服務器啓動後,將session文件轉化爲內存中的session對象便可。
                        * tomcat服務器能夠進行session對象的序列化和反序列化,而idea能夠序列化可是不可以反序列化讀取session對象(先刪除work文件再從新建立)
        3. session何時被銷燬?
            1. 服務器關閉
            2. session對象去調用一個方法invalidate();
            3. session默認失效時間是30分鐘(能夠設置默認失效時間,在tomcat目錄下web.xml的<session-config>標籤內)
    5. session的特色:
        1. session用於存儲一次會話的屢次請求的數據,存在服務器端
        2. session能夠存儲任意類型,任意大小的數據
        
        * session與cookie的區別:
            1. session存儲數據在服務器端
            2. session沒有數據大小限制,cookie有
            3. session數據安全,cookie相對於不安全
            
================================================================================================
驗證碼案例:
    分析:1.設置request的編碼
        2. 獲取參數Map集合
        3. 獲取驗證碼
        4. 將用戶信息封裝到user對象
        5. 先判斷程序生成的驗證碼和用戶輸入的驗證碼是否一致(減少數據庫的開銷)。從session中獲取程序生成的驗證碼。
            * 一致:
                * 再判斷用戶名和密碼是否正確
                    * 正確:
                        * 登陸成功
                        * 存儲數據 session
                        * 跳轉到successjsp(重定向)
                    * 不正確:
                        1. 給提示信息
                        2. 跳轉登陸頁面
            * 不一致:1. 給用戶提示信息,驗證碼錯誤(request)
                      2. 跳轉登陸頁面,轉發html

相關文章
相關標籤/搜索