开发者学堂课程【Java Web 项目实战1:注册登录、客户关系管理系统:给注册添加服务器端表单校验】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/39/detail/904
给注册添加服务器端表单校验
给注册添加验证码
1. verifycode类
* BufferedImage getImage () -->获取随机的验证码图片
* String getText(o -->获取图片上的文本
* static output (BfferedImage,outputstream)-->把图片写入到指定的额出流中。
2. verifyCodeservlet
*获取随机验证码图片
*把验证码图片上的文本保存到 session 中
*把图片响应到 response 的 outputStream 中
3. regist.jsp
*添加<img src="指向servlet"/>
*添加一个文本框,用来输入验证码
*"看不清,换一张”,是一个超链接。把上面的 img> 的 src 重新再次指向 servler! 为了处理浏览器的缓存,需要使用时间来做参数!
4.修改 Registservlet
*校验验证码!
*错误:保存表单数据到 request 域、保存错误信息到 request 域,转发回 regist.jsp
*正确:什么都不做,向下执行原来代码!
<body> <h1>注册</n1> <p style="color: red; font-weight: 900">$ {msg }</p> <号--$ {pageContext.request.contextPath }/Registservlet --号><form action="<c:url value='/Registservlet'/>" method="post"> 用户名:<input type="text" name="username" value="${user.username }"/><br/> 密码:<input type="passvord" name="passvord" value="$ pser.password }"/><br/> 验证码:<input type=“text”name="verifyCode" value="${user.verifyCode }" size="3"/> <img id="vCode" src="<c:url value='/verifyCodeServlet'/>" border="2"/> <a href="javascript:_change ()">换一张</ a><br/> <input type= "submit" value="注册”/> </form> </ body> </ html> |
服务器端表单(输入)校验
我们把这段校验,放到获取表单数据之后,验证码校验之前!
public void doPost(HttpServletRequest request,HttpServletResponse res throws ServletException,IOException i request.setCharacterEncoding ( "utf一8") ; response.setContentType ( "text /ntml ; charset=utf-8") ; //依赖 Userservlet Userservice userservice = new Userservice (); /* * 1.封装表单数据<封装到 user 对象中> * / User form = CommonUtils.toBean(request.getParameterMap(),User.class); /* 新添加任务: *校验验证码 *1.用户填写的验证码已经封装到user中 *2.从 session 获取真正的验证码 *3.比较两者,如果不同,保存错误信息、保存表单数据,转发到 regist.jsp *4.如果相同,什么都不做,向下执行! * / |
1.使用Map类型来装载错误信息!
*key :表单项名称,例如: username、Password、verifyCode
*value:
>非空:用户名不能为空,或者是"密码不能为空”
>长度:用户名长度必须在3~2o之间密码长度必须在3~20之间
2.在校验失败时,向map添加错误信息!那个字段出错,就给哪个字段添加错误信息!
3.判断 map 是否为空(长度是否为o),如果不空,说明有错误存在,保存 map 到 request 域,保存 torm 到 request 域(回显),转发回 regisc.jsp
4.在 regist.jsp 页面中,显示 map 中的错误信息。$ imap.username}
* 添加新任务(表单校验〉 * 1.创建一个 Map,用来装载所有的表单错误信息 在校验过程中,如果失败,向 map 添加错误信息,其中 key 为表单字段名称 *2.校验之后,查看 map 长度是否大于0,如果大于0,说明有错误信息,就是有错误! * >保存 map 到 request 中,保存 form 到 request 中,转发到 regist.jsp * 3.如果 map 为空,说明没有错误信息,向下执行! */ Map<String,string> errors = new HashMap<String,string>(); string username = form.getUsername ( );//获取表里的 usexname. if (username ==null ll username,trim () .isEmpty() ) { errors.put ( "username" ,"用户名不能为空!"); } else if(username.length() < 3 ll username.length() > 15){ errors.put ( "username","用户名长度必须在3~15之间!"); } |