关于 注册信息表单的验证

<span style="font-family: Arial, Helvetica, sans-serif;">//1.对提交过来的表单进行验证  </span>
		//1.对提交过来的表单进行验证  
<span style="white-space:pre">		</span>request.setCharacterEncoding("UTF-8");  //设置编码  不设置的话 校验中文会因为乱码而失败 !!
<span style="white-space:pre">		</span>FormBean formBean = WebUtils.request2Bean(request, FormBean.class);  //将request参数存在bean中 
<span style="white-space:pre">		</span>boolean b = formBean.validate();  //返回表单提交信息是否合法  主要判断的是表单是否符合格式
<span style="white-space:pre">		</span>if(!b){
<span style="white-space:pre">			</span>//验证失败  说明表单信息提交不合法  跳回表单界面 并提示信息
<span style="white-space:pre">			</span>request.setAttribute("form", formBean);
<span style="white-space:pre">			</span>request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>else {
<span style="white-space:pre">			</span>// 如果验证成功  则通过service进行注册处理   也就是判断用户名是否重复 不重复则注册入数据库
<span style="white-space:pre">			</span>BusinessServiceImpl businessServiceImpl = new BusinessServiceImpl();
<span style="white-space:pre">			</span>User user = new User();
<span style="white-space:pre">			</span>WebUtils.copyBean(formBean, user);    //将表单信息 拷贝到user对象中
<span style="white-space:pre">			</span>user.setId(WebUtils.getOnlyId());   //获取唯一id值赋入
<span style="white-space:pre">			</span>try {
<span style="white-space:pre">				</span>businessServiceImpl.register(user);   //注册用户  如果注册失败 则会抛出异常 在下面捕获
<span style="white-space:pre">				</span>//5. 如果处理成功 则 跳转到一个页面 显示 注册成功  
<span style="white-space:pre">				</span>request.setAttribute("message", "注册成功!");
<span style="white-space:pre">				</span>request.getRequestDispatcher("/message.jsp").forward(request, response);
<span style="white-space:pre">			</span>} catch (ExistUserException e) {
<span style="white-space:pre">				</span>//如果处理失败  跳转到 注册界面显示 用户已存在  
<span style="white-space:pre">				</span>formBean.getErrors().put("username", "用户名已存在!");  
<span style="white-space:pre">				</span>request.setAttribute("form", formBean);
<span style="white-space:pre">				</span>request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);
<span style="white-space:pre">			</span>}catch (Exception e) {
<span style="white-space:pre">				</span>request.setAttribute("message", "出现其他未知错误!");
<span style="white-space:pre">				</span>request.getRequestDispatcher("/message.jsp").forward(request, response);
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>
<span style="white-space:pre">		</span>}


2. 对表单信息的合法化校验:

public boolean validate(){
		boolean isOk = true;
		//验证用户名是否是 6-8位  且全是字母或数字   
		if(this.username==null||this.username.trim().equals("")){
			isOk = false;
			errors.put("username", "用户名不能为空!");
		}
		else {
			if(!this.username.matches("[A-Za-z0-9]{3,8}")){
				isOk=false;
				System.out.println("------->"+this.username+"---"+"密码空");	
				errors.put("username", "用户名输入不合法!");
			}
		}
		//验证密码是否为6-8位   且为数字或字母 
		if(this.password==null||this.password.trim().equals("")){
			isOk = false;
			System.out.println("------->"+this.password+"---"+"密码空");	
			errors.put("password", "密码不能为空!");
		}
		else {
			if(!this.password.matches("[A-Za-z0-9]{3,8}")){
				isOk=false;
				errors.put("password", "密码输入不合法!");
			}
		}
		
		
		//验证确认密码是否与密码相同
		if(this.password2==null||this.password2.trim().equals("")||!this.password.equals(this.password2)){
			isOk = false;
			errors.put("password2", "确认密码错误!");
		}
		//验证邮件格式 
		if(this.email==null||this.email.equals("")){
			isOk = false;
			errors.put("email", "邮箱不能为空!");
		}
		else{
			// [email protected] 
			if(!this.email.matches("\\w+@\\w+(\\.\\w+)+")){
				isOk = false;
				errors.put("email", "邮箱格式错误!");
			}
		}
		
		//验证日期格式  
		if(this.birthday==null||this.birthday.trim().equals("")){
			isOk = false;
			
			//验证日期的方法
			try {
				DateLocaleConverter date = new DateLocaleConverter();
				date.convert(this.birthday, "yyyy-MM-dd");
			} catch (Exception e) {
				isOk = false;
				errors.put("birthday", "生日输入格式错误!");
			}
			
			
		}
		//验证昵称 必须为中文
		if(this.nickname==null||this.nickname.equals("")){
			isOk = false;
			errors.put("nickname", "昵称不能为空!");
		}
		else{
			// 中文
			if(!this.nickname.matches("[\u4e00-\u9fa5]+")){
				isOk = false;
				errors.put("nickname", "昵称必须为中文!");
			}
		}
		return isOk;
		
	}
上述中  用了正则表达式   汉字unicode范围为
\u4e00-\u9fa5

//验证日期的方法 由于SimpleDateFormat 方法无法判断 类似  1995-12-35 这样的日期  所以要试用下述方法
			try {
				DateLocaleConverter date = new DateLocaleConverter();
				date.convert(this.birthday, "yyyy-MM-dd");
			} catch (Exception e) {
				isOk = false;
				errors.put("birthday", "生日输入格式错误!");
			}


你可能感兴趣的:(关于 注册信息表单的验证)