Java中session存儲Users對象實(shí)現(xiàn)記住密碼
之前做過cookie實(shí)現(xiàn)記住密碼,這次換成session記住密碼又做了一遍,有很多收獲。本次博客分為兩部分。一部分是cookie和session的區(qū)別(面試經(jīng)常被問道);另一部分是sesion實(shí)現(xiàn)記住密碼,在Jsp頁面和Controller頁面的代碼編寫。
一、cookie和session區(qū)別區(qū)別:
1.cookie是瀏覽器端技術(shù);將數(shù)據(jù)保存到瀏覽器中,不安全;不可以保存中文保存時編碼: URLEncoder.encode();取值時解碼:URLDecoder.decode();。2.session是服務(wù)器端技術(shù);將數(shù)據(jù)保存到服務(wù)器中,當(dāng)訪問servlet時,服務(wù)器創(chuàng)建session對象同時會向?yàn)g覽器寫入一個sessionId保存到cookie中,當(dāng)瀏覽器關(guān)閉,session里面的數(shù)據(jù)沒有刪除,而是保存sessionId的cookie丟失因此找不到數(shù)據(jù),安全。
相同:兩者作用范圍都是一次會話(瀏覽器開啟到關(guān)閉)有效。
二、session實(shí)現(xiàn)記住密碼分為3步。1.jsp頁面布局
默認(rèn)rem選擇框是選中狀態(tài)
<form name='register' action='login.action' method='post'><div class='form_row'><label class='contact'><strong>Phone:</strong></label> <input type='text' name='uPhone' value='${param.uPhone }' onblur='phoneBlur(this.value);'/><span id='uPhoneMsg'></span></div><div class='form_row'><label class='contact'><strong>Pwd:</strong></label> <input type='text' name='uPwd' /><span id='uPwdMsg'>${flag }</span></div><div class='form_row'><div class='terms'><input type='checkbox' name='rem' checked='checked'>記住密碼<!-- <input type='checkbox' name='terms' /> Rember me --></div></div><div class='form_row'><input type='submit' value='login' /></div></form>
2.controller層邏輯處理我的代碼有兩處用到session,這里只看第二處即可。//2.登錄按鈕按下后 當(dāng)rem被選中,且密碼正確時,將賬號密碼這個對象存入session
//5.1登錄@RequestMapping('login')public String login(String uPhone,String uPwd,String rem,Model model,HttpServletResponse response,HttpServletRequest request){HttpSession session = request.getSession();String flag = '1';String uId = us.selectUsersByPhone_PwdService(uPhone, uPwd);//判斷如果賬號密碼不存在 返回登錄頁面;存在,跳轉(zhuǎn)到首頁if(uId==null){flag='密碼錯誤';request.setAttribute('flag', flag);return 'register';}else{Users u1 = us.selectUsersByIdService(uId);//1.只要登錄成功 就將users對象存入session中,為之后的過濾器使用session.setAttribute('handlerInterceptorSession', u1);//2.登錄按鈕按下后 當(dāng)rem被選中,且密碼正確時,將賬號密碼存入sessionif(rem.equals('on')){Users u2 = new Users(uPhone,uPwd);session.setAttribute('remSession', u2);}return 'index';}}
3.jsp頁面補(bǔ)充這里主要看//5.當(dāng)光標(biāo)離開后調(diào)用記住密碼的功能邏輯是:用戶輸入賬號光標(biāo)離開后,從session中取值,如果賬號在session中存在,則獲取賬號對應(yīng)的密碼,將密碼賦值給輸入框。(前提是:rem選擇框是選中狀態(tài),在1.jsp頁面布局里面就設(shè)置好了)
<script>function phoneBlur(uPhone){var phoneMsg = document.getElementById('uPhoneMsg');phoneMsg.innerText='';$.ajax({type:'post',url:'phoneExist.action',data:{'uPhone':uPhone},dataType:'text', /* 當(dāng)flag =0 提示用戶不存在當(dāng)flag = 1 普通用戶 */success:function(flag){if(flag==0){phoneMsg.innerText = '請先注冊';}}}) //5.當(dāng)光標(biāo)離開后調(diào)用記住密碼的功能remPwd(uPhone);};//5記住密碼/*1.當(dāng)phone光標(biāo)離開后 當(dāng)rem被選中 從Remsession里面遍歷,獲取賬號對應(yīng)的密碼。 *///alert($('#rem').val());function remPwd(uPhone){//每次進(jìn)入 密碼先清空$('#uPwd').val('');var remVal = $('#rem').val();if(remVal=='on'){//第一次登錄會報異常,所以加''var sessionPhone= ${remSession.uPhone}+'';var sessionPwd= ${remSession.uPwd}+'';//當(dāng)賬號在session中可以查詢到,就將session中的密碼賦值給輸入框pwdif(sessionPhone==uPhone){$('#uPwd').val(sessionPwd);}}}</script>
至此,session存儲Users對象實(shí)現(xiàn)記住密碼功能完畢,更多相關(guān)Java session記住密碼內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP基礎(chǔ)入門第四篇(腳本變量、函數(shù)、過程和條件語句)2. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)3. jscript與vbscript 操作XML元素屬性的代碼4. Jsp servlet驗(yàn)證碼工具類分享5. XML在語音合成中的應(yīng)用6. 基于PHP做個圖片防盜鏈7. ASP將數(shù)字轉(zhuǎn)中文數(shù)字(大寫金額)的函數(shù)8. 基于javaweb+jsp實(shí)現(xiàn)企業(yè)車輛管理系統(tǒng)9. Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件列表展示(二)10. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)
