Java中session存儲(chǔ)Users對(duì)象實(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ù)保存到瀏覽器中,不安全;不可以保存中文保存時(shí)編碼: URLEncoder.encode();取值時(shí)解碼:URLDecoder.decode();。2.session是服務(wù)器端技術(shù);將數(shù)據(jù)保存到服務(wù)器中,當(dāng)訪問servlet時(shí),服務(wù)器創(chuàng)建session對(duì)象同時(shí)會(huì)向?yàn)g覽器寫入一個(gè)sessionId保存到cookie中,當(dāng)瀏覽器關(guān)閉,session里面的數(shù)據(jù)沒有刪除,而是保存sessionId的cookie丟失因此找不到數(shù)據(jù),安全。
相同:兩者作用范圍都是一次會(huì)話(瀏覽器開啟到關(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被選中,且密碼正確時(shí),將賬號(hào)密碼這個(gè)對(duì)象存入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);//判斷如果賬號(hào)密碼不存在 返回登錄頁面;存在,跳轉(zhuǎn)到首頁if(uId==null){flag='密碼錯(cuò)誤';request.setAttribute('flag', flag);return 'register';}else{Users u1 = us.selectUsersByIdService(uId);//1.只要登錄成功 就將users對(duì)象存入session中,為之后的過濾器使用session.setAttribute('handlerInterceptorSession', u1);//2.登錄按鈕按下后 當(dāng)rem被選中,且密碼正確時(shí),將賬號(hào)密碼存入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)用記住密碼的功能邏輯是:用戶輸入賬號(hào)光標(biāo)離開后,從session中取值,如果賬號(hào)在session中存在,則獲取賬號(hào)對(duì)應(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 = '請(qǐng)先注冊(cè)';}}}) //5.當(dāng)光標(biāo)離開后調(diào)用記住密碼的功能remPwd(uPhone);};//5記住密碼/*1.當(dāng)phone光標(biāo)離開后 當(dāng)rem被選中 從Remsession里面遍歷,獲取賬號(hào)對(duì)應(yīng)的密碼。 *///alert($('#rem').val());function remPwd(uPhone){//每次進(jìn)入 密碼先清空$('#uPwd').val('');var remVal = $('#rem').val();if(remVal=='on'){//第一次登錄會(huì)報(bào)異常,所以加''var sessionPhone= ${remSession.uPhone}+'';var sessionPwd= ${remSession.uPwd}+'';//當(dāng)賬號(hào)在session中可以查詢到,就將session中的密碼賦值給輸入框pwdif(sessionPhone==uPhone){$('#uPwd').val(sessionPwd);}}}</script>
至此,session存儲(chǔ)Users對(duì)象實(shí)現(xiàn)記住密碼功能完畢,更多相關(guān)Java session記住密碼內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP實(shí)現(xiàn)加法驗(yàn)證碼2. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向3. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法4. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明5. CSS hack用法案例詳解6. ASP.NET MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息7. asp中response.write("中文")或者js中文亂碼問題8. PHP設(shè)計(jì)模式中工廠模式深入詳解9. jsp網(wǎng)頁實(shí)現(xiàn)貪吃蛇小游戲10. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)
