Java中session存儲Users對象實現記住密碼
之前做過cookie實現記住密碼,這次換成session記住密碼又做了一遍,有很多收獲。本次博客分為兩部分。一部分是cookie和session的區別(面試經常被問道);另一部分是sesion實現記住密碼,在Jsp頁面和Controller頁面的代碼編寫。
一、cookie和session區別區別:
1.cookie是瀏覽器端技術;將數據保存到瀏覽器中,不安全;不可以保存中文保存時編碼: URLEncoder.encode();取值時解碼:URLDecoder.decode();。2.session是服務器端技術;將數據保存到服務器中,當訪問servlet時,服務器創建session對象同時會向瀏覽器寫入一個sessionId保存到cookie中,當瀏覽器關閉,session里面的數據沒有刪除,而是保存sessionId的cookie丟失因此找不到數據,安全。
相同:兩者作用范圍都是一次會話(瀏覽器開啟到關閉)有效。
二、session實現記住密碼分為3步。1.jsp頁面布局
默認rem選擇框是選中狀態
<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.登錄按鈕按下后 當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);//判斷如果賬號密碼不存在 返回登錄頁面;存在,跳轉到首頁if(uId==null){flag='密碼錯誤';request.setAttribute('flag', flag);return 'register';}else{Users u1 = us.selectUsersByIdService(uId);//1.只要登錄成功 就將users對象存入session中,為之后的過濾器使用session.setAttribute('handlerInterceptorSession', u1);//2.登錄按鈕按下后 當rem被選中,且密碼正確時,將賬號密碼存入sessionif(rem.equals('on')){Users u2 = new Users(uPhone,uPwd);session.setAttribute('remSession', u2);}return 'index';}}
3.jsp頁面補充這里主要看//5.當光標離開后調用記住密碼的功能邏輯是:用戶輸入賬號光標離開后,從session中取值,如果賬號在session中存在,則獲取賬號對應的密碼,將密碼賦值給輸入框。(前提是:rem選擇框是選中狀態,在1.jsp頁面布局里面就設置好了)
<script>function phoneBlur(uPhone){var phoneMsg = document.getElementById('uPhoneMsg');phoneMsg.innerText='';$.ajax({type:'post',url:'phoneExist.action',data:{'uPhone':uPhone},dataType:'text', /* 當flag =0 提示用戶不存在當flag = 1 普通用戶 */success:function(flag){if(flag==0){phoneMsg.innerText = '請先注冊';}}}) //5.當光標離開后調用記住密碼的功能remPwd(uPhone);};//5記住密碼/*1.當phone光標離開后 當rem被選中 從Remsession里面遍歷,獲取賬號對應的密碼。 *///alert($('#rem').val());function remPwd(uPhone){//每次進入 密碼先清空$('#uPwd').val('');var remVal = $('#rem').val();if(remVal=='on'){//第一次登錄會報異常,所以加''var sessionPhone= ${remSession.uPhone}+'';var sessionPwd= ${remSession.uPwd}+'';//當賬號在session中可以查詢到,就將session中的密碼賦值給輸入框pwdif(sessionPhone==uPhone){$('#uPwd').val(sessionPwd);}}}</script>
至此,session存儲Users對象實現記住密碼功能完畢,更多相關Java session記住密碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: