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