JSP 登錄界面,保留用戶輸入的信息


【注】以下內容由 JSP 腳本代碼書寫,可完全由 EL 表達式代替。

問題描述:

  當判斷出用戶輸入的 "密碼錯誤" 或 "用戶不存在" 返回登錄界面后,默認情況下,輸入框會被清空,那該如何保留用戶輸入的信息呢?

運用方法:

  1、服務器把獲取到的表單數據保存至 request 域中,然后請求轉發回登錄界面;

  2、登錄界面(JSP)獲取 request 域中的內容,使其成為 <input> 標簽的 value 屬性值。

不足之處:

  使用 "請求轉發" 返回登錄頁面,會導致地址欄仍保留 Servlet 的地址。

實現步驟:

  如:登錄頁面 ( Login.jsp ) 把表單提交到服務器 ( LoginServlet ) 中,獲取到的參數分別為:username, password,那么:

  1、LoginServlet:

1 request.setAttribute( "usernameInput", username );  // 保存輸入的用戶名
2 
3 request.setAttribute( "passwordInput", password );  // 保存輸入的密碼
4 
5 request.getRequestDispatcher( "Login.jsp" ).forward( request, response );  // 請求轉發至登錄頁面

 

 

  2、Login.jsp:

    

 1 <%
 2   String usernameInput = "";  // 防空處理
 4 
 5   String passwordInput = "";  // 防空處理
 6 
 7   if( request.getAttribute( "usernameInput" ) != null )
 8 
 9   {
10 
11     usernameInput = ( String ) request.getAttribute( "usernameInput" );  // 獲取 request 域中保存的用戶名輸入
12 
13     passwordInput = ( String ) request.getAttribute( "passwordInput" );  // 獲取密碼輸入
14 
15   }
16 
17 %>
18 
19 <!-- 替換輸入框的 value 值 -->
20 
21 <form method = " POST " action = " /XXX項目/LoginServlet ">
22 
23   <input type = " text " value = " <%= usernameInput %> " />
24 
25   <input type = "password" value = " <%= passwordInput %> " />
26 
27 </form>

 

    

問題追加:

  之前用 Session 域保存,好像每次顯示的都是上一次的輸入。

  猜測:Session 域是在獲取的時候才進行保存?所以會慢一拍?  (經測試,沒有出現該錯誤)

  所以,使用 session 域保存輸入,再重定向回登錄頁面,可以實現保留輸入和地址欄不變兩開花(頁面獲取到域信息后,應刪除域信息)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM