Java中session存儲Users對象實現(xiàn)記住密碼
之前做過cookie實現(xiàn)記住密碼,這次換成session記住密碼又做了一遍,有很多收獲。
本次博客分為兩部分。一部分是cookie和session的區(qū)別(面試經(jīng)常被問道);另一部分是sesion實現(xiàn)記住密碼,在Jsp頁面和Controller頁面的代碼編寫。
一、cookie和session區(qū)別
區(qū)別:
1.cookie是瀏覽器端技術(shù);將數(shù)據(jù)保存到瀏覽器中,不安全;不可以保存中文保存時編碼: URLEncoder.encode();取值時解碼:URLDecoder.decode();。
2.session是服務(wù)器端技術(shù);將數(shù)據(jù)保存到服務(wù)器中,當訪問servlet時,服務(wù)器創(chuàng)建session對象同時會向瀏覽器寫入一個sessionId保存到cookie中,當瀏覽器關(guān)閉,session里面的數(shù)據(jù)沒有刪除,而是保存sessionId的cookie丟失因此找不到數(shù)據(jù),安全。
相同:
兩者作用范圍都是一次會話(瀏覽器開啟到關(guān)閉)有效。
二、session實現(xiàn)記住密碼
分為3步。
1.jsp頁面布局
默認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" class="contact_input" name="uPhone" id="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" class="contact_input" name="uPwd" id="uPwd"/> <span id="uPwdMsg">${flag }</span> </div> <div class="form_row"> <div class="terms"> <input type="checkbox" name="rem" id="rem" checked="checked">記住密碼 <!-- <input type="checkbox" name="terms" id="terms"/> Rember me --> </div> </div> <div class="form_row"> <input type="submit" class="register" 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); //判斷如果賬號密碼不存在 返回登錄頁面;存在,跳轉(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.登錄按鈕按下后 當rem被選中,且密碼正確時,將賬號密碼存入session if(rem.equals("on")){ Users u2 = new Users(uPhone,uPwd); session.setAttribute("remSession", u2); } return "index"; } }
3.jsp頁面補充
這里主要看//5.當光標離開后調(dià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", /* 當flag =0 提示用戶不存在 當flag = 1 普通用戶 */ success:function(flag){ if(flag==0){ phoneMsg.innerText = "請先注冊"; } } }) //5.當光標離開后調(diào)用記住密碼的功能 remPwd(uPhone); }; //5記住密碼 /*1.當phone光標離開后 當rem被選中 從Remsession里面遍歷,獲取賬號對應(yīng)的密碼。 */ //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中的密碼賦值給輸入框pwd if(sessionPhone==uPhone){ $("#uPwd").val(sessionPwd); } } } </script>
至此,session存儲Users對象實現(xiàn)記住密碼功能完畢,更多相關(guān)Java session記住密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- java中的session對象及其常用方法小結(jié)
- Java異常 Factory method''sqlSessionFactory''rew exception;ested exception is java.lang.NoSuchMethodError:
- Java Web會話技術(shù)Session的簡單使用
- 詳解Java分布式系統(tǒng)中session一致性問題
- Java分布式session存儲解決方案圖解
- Java Session驗證碼案例代碼實例解析
- 詳解Java分布式Session共享解決方案
- Java Hibernate使用SessionFactory創(chuàng)建Session案例詳解
相關(guān)文章
解決springboot 獲取form-data里的file文件的問題
這篇文章主要介紹了解決springboot 獲取form-data里的file文件的問題的相關(guān)資料,這里提供了詳細的解決步驟,需要的朋友可以參考下2017-07-07maven繼承父工程統(tǒng)一版本號的實現(xiàn)
這篇文章主要介紹了maven繼承父工程統(tǒng)一版本號的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08使用idea創(chuàng)建web框架和配置struts的方法詳解
這篇文章主要介紹了使用idea創(chuàng)建web框架和配置struts的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09解決工具接口調(diào)用報錯:error:Unsupported Media Type問題
當遇到"UnsupportedMediaType"錯誤時,意味著HTTP請求的Content-Type與服務(wù)器期望的不匹配,比如服務(wù)器期待接收JSON格式數(shù)據(jù),而發(fā)送了純文本格式,常見的Content-Type類型包括text/html、application/json、multipart/form-data等2024-10-10Springboot Redis設(shè)置key前綴的方法步驟
這篇文章主要介紹了Springboot Redis設(shè)置key前綴的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換
這篇文章主要介紹了基于Java實現(xiàn)文件和base64字符串轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01