鈍化
十載的江源網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整江源建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“江源網(wǎng)站設(shè)計”,“江源網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
指將HttpSession對象序列化到硬盤中,一般鈍化發(fā)生在服務(wù)器停止,服務(wù)器停止時會自動將HttpSession對象序列化到硬盤,這個事我們稱為鈍化。
活化
將硬盤中HttpSession對象加載進內(nèi)存中,一般在服務(wù)器啟動時,會自動將硬盤中HttpSession對象重新加載進內(nèi)存,這一過程我們成為活化。
鈍化指將內(nèi)存中的對象寫到硬盤中,
一個類要想可以序列化到硬盤中必須要實現(xiàn)java.io.Serializable接口
這個類中的所有屬性也需要實現(xiàn)java.io.Serializable接口
如果服務(wù)器的訪問量較大,那么服務(wù)器會有大量的HttpSession對象存在,
但是這些對象并不是都處于一個活躍的狀態(tài),但是這些不活躍也會存在于內(nèi)存中
這樣會大量占用內(nèi)存,這時我們就希望將這些閑置的對象寫入硬盤中,在用戶需要使用session在加載進內(nèi)存。
在context.xml文件中可以加入如下內(nèi)容
maxIdleSwap:指session的最大閑置時間,超過該時間以后,session將會自動鈍化。
directory:鈍化到硬盤中的目錄
session會鈍化到tomcat服務(wù)器的work目錄中
表單的重復(fù)提交
表單重復(fù)提交指的是同一個表單相同的內(nèi)容多次提交請求
表單重復(fù)提交的危害:
1.表單重復(fù)提交,都是重復(fù)的數(shù)據(jù),會增加數(shù)據(jù)庫中垃圾數(shù)據(jù)。
2.無形中增加了服務(wù)器壓力。
表單重復(fù)提交的幾種情況:
1.表單提交成功以后,反復(fù)刷新成功頁面。
產(chǎn)生問題的根本原因:
我們在Servlet使用的轉(zhuǎn)發(fā)的形式跳轉(zhuǎn)到成功頁面的,所以整個過程中瀏覽器只發(fā)送了一次請求,當(dāng)我們在成功頁面刷新時,實際是將上次的請求又發(fā)送了一遍,所以造成了重復(fù)提交。
解決:
不使用轉(zhuǎn)發(fā),而是使用重定向
重定向發(fā)了兩次請求,我們再次刷新,刷新的第二個請求,而不是第一個。
2.網(wǎng)速較慢時,用戶多次點擊提交按鈕。
產(chǎn)生問題的根本原因:
就是表單的提交按鈕可以點擊多次
解決:
使表單的提交按鈕只能點一次,點完一次以后按鈕將變?yōu)椴豢捎玫臓顟B(tài)。
window.onload = function(){
//點擊完提交按鈕以后,讓按鈕變?yōu)橐粋€不可用的狀態(tài)
//獲取按鈕對象
var btn = document.getElementById(“btn”);
//為按鈕綁定一個單擊響應(yīng)函數(shù)
btn.onclick = function(){
//設(shè)置按鈕為不可用狀態(tài)
this.disabled = true;
//如果將按鈕設(shè)置為不用狀態(tài),那么表單也將不會提交
//我們需要手動提交表單
this.parentNode.submit();
};
};
3.成功提交請求后,點擊回退按鈕,但是不刷新頁面,再次提交。
產(chǎn)生問題的根本原因:
服務(wù)器端的Servlet不能區(qū)分兩次請求是不是重復(fù)提交的內(nèi)容
解決:
在Servlet中,我們需要在處理請求之前,先來檢查表單是否是重復(fù)提交。
使用token解決這個問題
token就是令牌意思
所謂的token就是服務(wù)器在處理用戶請求之前,先檢查token是否正確,如果token正確那服務(wù)器正常處理請求,如果token不正確服務(wù)器不處理請求.
我們的令牌是一個一次性的令牌,只能使用一次.
流程:
1.創(chuàng)建一個令牌,要求唯一,不能重復(fù)(UUID),并在服務(wù)器中保存token。
2.放入到瀏覽器的表單中。
3.瀏覽器提交表單時,會同時將token一起提交。
4.服務(wù)器在處理請求之前要檢查令牌是否有效。
5.銷毀token。
驗證碼使用流程
上述工作,大部分工作我們都可以通過一款jar包來完成。
kaptcha-2.3.2
該Jar可以:
1.可以生成一個隨機的字符串
2.可以將字符串保存到session
3.可以將字符串轉(zhuǎn)換為一個圖片
這個kaptcha-2.3.2里邊實際上就是一個Servlet,我們通過訪問他給我們提供的Servlet,就可以直接完成上述工作
導(dǎo)入jar包之后,通過在web.xml文件中注冊servelt即可。
< servlet> < servlet-name >kaptcha servlet-name>com.google.code.kaptcha.servlet.KaptchaServlet //在session中存儲該驗證碼的屬性的名字 kaptcha.session.key code param-value> kaptcha servlet-name> /code.jpg url-pattern>