中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Session的活化和鈍化,表單重復提交,驗證碼使用流程

發布時間:2020-06-07 21:19:25 來源:網絡 閱讀:780 作者:rob_rookie 欄目:建站服務器
  • 鈍化

指將HttpSession對象序列化到硬盤中,一般鈍化發生在服務器停止,服務器停止時會自動將HttpSession對象序列化到硬盤,這個事我們稱為鈍化。

  • 活化

將硬盤中HttpSession對象加載進內存中,一般在服務器啟動時,會自動將硬盤中HttpSession對象重新加載進內存,這一過程我們成為活化。

  • 鈍化指將內存中的對象寫到硬盤中,

  • 一個類要想可以序列化到硬盤中必須要實現java.io.Serializable接口

  • 這個類中的所有屬性也需要實現java.io.Serializable接口

  • 如果服務器的訪問量較大,那么服務器會有大量的HttpSession對象存在,

但是這些對象并不是都處于一個活躍的狀態,但是這些不活躍也會存在于內存中

這樣會大量占用內存,這時我們就希望將這些閑置的對象寫入硬盤中,在用戶需要使用session在加載進內存。

在context.xml文件中可以加入如下內容

maxIdleSwap:指session的最大閑置時間,超過該時間以后,session將會自動鈍化。

directory:鈍化到硬盤中的目錄

session會鈍化到tomcat服務器的work目錄中

表單的重復提交

  • 表單重復提交指的是同一個表單相同的內容多次提交請求

  • 表單重復提交的危害:

    1.表單重復提交,都是重復的數據,會增加數據庫中垃圾數據。

    2.無形中增加了服務器壓力。

  • 表單重復提交的幾種情況:

1.表單提交成功以后,反復刷新成功頁面。

  • 產生問題的根本原因:

我們在Servlet使用的轉發的形式跳轉到成功頁面的,所以整個過程中瀏覽器只發送了一次請求,當我們在成功頁面刷新時,實際是將上次的請求又發送了一遍,所以造成了重復提交。

  • 解決:

不使用轉發,而是使用重定向

重定向發了兩次請求,我們再次刷新,刷新的第二個請求,而不是第一個。

2.網速較慢時,用戶多次點擊提交按鈕。

  • 產生問題的根本原因:

就是表單的提交按鈕可以點擊多次

  • 解決:

使表單的提交按鈕只能點一次,點完一次以后按鈕將變為不可用的狀態。

    window.onload = function(){

        //點擊完提交按鈕以后,讓按鈕變為一個不可用的狀態

        //獲取按鈕對象

        var btn = document.getElementById(“btn”);

        //為按鈕綁定一個單擊響應函數

        btn.onclick = function(){

        //設置按鈕為不可用狀態

        this.disabled = true;

        //如果將按鈕設置為不用狀態,那么表單也將不會提交

        //我們需要手動提交表單

        this.parentNode.submit();

        }; 
    };

3.成功提交請求后,點擊回退按鈕,但是不刷新頁面,再次提交。

  • 產生問題的根本原因:

服務器端的Servlet不能區分兩次請求是不是重復提交的內容

  • 解決:

在Servlet中,我們需要在處理請求之前,先來檢查表單是否是重復提交。

使用token解決這個問題

token就是令牌意思

所謂的token就是服務器在處理用戶請求之前,先檢查token是否正確,如果token正確那服務器正常處理請求,如果token不正確服務器不處理請求.

我們的令牌是一個一次性的令牌,只能使用一次.

流程:

1.創建一個令牌,要求唯一,不能重復(UUID),并在服務器中保存token。

2.放入到瀏覽器的表單中。

3.瀏覽器提交表單時,會同時將token一起提交。

4.服務器在處理請求之前要檢查令牌是否有效。

5.銷毀token。

 

驗證碼使用流程

Session的活化和鈍化,表單重復提交,驗證碼使用流程

上述工作,大部分工作我們都可以通過一款jar包來完成。 
kaptcha-2.3.2 
該Jar可以: 
1.可以生成一個隨機的字符串 
2.可以將字符串保存到session 
3.可以將字符串轉換為一個圖片 
這個kaptcha-2.3.2里邊實際上就是一個Servlet,我們通過訪問他給我們提供的Servlet,就可以直接完成上述工作

導入jar包之后,通過在web.xml文件中注冊servelt即可。

< servlet>
    < servlet-name >kaptcha</ servlet-name>
    <servlet-class> com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class >
    <init-param >
       //在session中存儲該驗證碼的屬性的名字      
        <param-name> kaptcha.session.key</param-name >
        <param-value >code</ param-value>
    </init-param >
  </servlet >

  <servlet-mapping >
    <servlet-name >kaptcha</ servlet-name>
    <url-pattern >/code.jpg</ url-pattern>
  </servlet-mapping >


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦川县| 怀柔区| 全州县| 东丽区| 禹城市| 佛冈县| 梅州市| 开阳县| 南丹县| 辽阳县| 米易县| 嘉定区| 兴宁市| 华宁县| 廊坊市| 调兵山市| 拉孜县| 玉屏| 扶余县| 江川县| 华池县| 锦屏县| 都江堰市| 治多县| 沿河| 自治县| 忻城县| 萍乡市| 武清区| 日喀则市| 天长市| 诸暨市| 河东区| 岑溪市| 浦江县| 清水县| 奉新县| 宁强县| 大冶市| 黄龙县| 屯留县|