一. 储备知识
1.1 问题描述
在regist.jsp注册页面中,当我提交注册信息,但是注册失败,那么服务器会转发路径到regist.jsp。但是当重新回到regist.jsp页面时,刚刚填写的注册信息全部变为空白了,假如有很多信息要重新填写,无疑增加了工作量和打磨了用户的耐心。所以我们要设计一个解决方案,使得不需要重新填写注册信息。
1.2 为什么会产生上面的问题?
因为第一次提交请求给服务器的请求变量和服务器转发回来的请求变量已经不是同一个变量了。所以他们携带的请求参数也会不同。
1.3 解决方案
- 用户在注册页面输入注册信息提交(发起一次请求,请求给RegistServlet之后,如果注册失败则转发到注册页面)
- 在转发后的页面中,获取注册信息并在表单回显
- 逻辑代码的设计:如果注册页面第一次打开,请求中不包含请求参数;如果用户注册失败,请求从Servlet转发过来时就包含了请求参数
二. 源码例子
regist.jsp
<input class="itxt" type="text" placeholder="请输入用户名" autocomplete="off" tabindex="1" name="username" value="${param.username }">
回显的主要代码体现在value="${param.username}"