完成简单的注册

<!-- 这是一个注用来册用户的表单,

 

    在提交表单之前,表单的每个input标签都要经过验证,然后在能提交。

    验证的方式是用 jquery.validate 方式进行验证的。

    然后在用户名是否在之前被注册过,还有密码和确认密码是否相同 都是通过jquery 的$.ajax方法验证的

 

    具体实现是,把用户名、密码、确认密码拼接成一个字符串,然后传到后代,在后台经过处理后,返回一个msg.

    把msg传到前台,在通过msg显示到 前台的jsp页面上去。

-->

<form name="register" id="register_user" method="post" action="RegisterUser.action">
<fieldset>
<legend>一个简单的有验证功能的注册用户的表单</legend>
<p>
<label for="user_name">账户名</label><em>*</em>
<input type="text" name="username" id="user_name" onblur="javascript:registerUsername();">
<span id="usernameMsg"></span>
</p>
<p>
<label for="pwd">密码</label><em>*</em>
<input type="password" name="password" id="pwd">
</p>
<p>
<label for="confirm_pwd">确认密码</label><em>*</em>
<input type="password" name="cpassword" id="confirm_pwd" onblur="javascript:registerPwd();">
<span id="pwdMsg"></span>
</p>

<p>
<label for="email">电子邮件</label><em>*</em>
<input type="text" name="email" id="email"/>
</p>
<p>
<input class="submit" type="submit" value="提交"/>
</p>
</fieldset>
</form><br/>

 

------------------------------------------------------------------------------------------

 

<script type="text/javascript">
function registerPwd() {
 alert("registerPwd()被执行了吗");
var valData = 'password=' + $('#pwd').val();
valData += '&cpassword=' + $('#confirm_pwd').val();

alert(valData);
$.ajax({
    type:'post',                         
    url: "Register!confirmPwd.action",
    data:valData,
    cache: false,
    success: function(data){
      if(data!=null){
      $("#pwdMsg").html(data);
      }
    }
 });
}
function registerUsername() {
 alert("registerUsername()被执行了吗");
var valData = 'username=' + $('#user_name').val();

alert(valData);
$.ajax({
    type:'post',                         
    url: "Register!registerUsername.action",
    data:valData,
    cache: false,
    success: function(data){
      if(data!=null){
      $("#usernameMsg").html(data);
      }
    }
 });
}
</script>

 

-----------------------------------------------------------------------------------------

用来验证用户名 密码和确认密码的后台

public class RegisterAction extends ActionSupportExtend {

 

public String confirmPwd() throws Exception {
 
  if(!cpassword.equals(password))
  {
   msg = "<font color=red>两次输入的密码不相同</font>";
  }
  return "ajax";
 }
 
 public String registerUsername() throws Exception {
   //验证账户名是否已经被注册过
   if(username!=null&&!"".equals(username)){
   
   int mark = registerService.queryUsername(username);
   if(mark==0){
    msg = "<font color=red>用户名可以注册</font>";
   }
   else{
    msg = "<font color=red>用户名已经被注册过</font>";
   }
   }
    
      return "ajax";
 }

}

-------------------------------------------------------------------

提交表单的后台


public class RegisterUserAction extends ActionSupportExtend implements ModelDriven<Users> {

 @Autowired
 private RegisterService registerService;
 
    private Users user = new Users();
   
 @Override
 public String execute() throws Exception {
  
  registerService.addUser(user);
  return SUCCESS;
 }

  public Users getModel() {
  
  return user;
 }

}
 注意 在这个Action中是通过Struts2的模型驱动的方式,直接把表单中每个input标签的name属性封装到对应的java实体类中,我在Action中定义了一个Users user,这个user 就是我表单中的数据生成的。

 

说白了,我表单中的<input type="text" name="username" id="user_name" >,name属性值是username,就是和Users类中的 username 属性对应的.

 

我在Action中定义一个user,Struts2会帮我把表单中的数据封转到这个user里边。然后就可以直接使用这个user啦,我是吧user,作为参数传递的。

--------------------------

如果不使用模型驱动,very sorry,你在 Action 中定义的Users user 没有值,你只有通过在Action中定义username,password,和cpassword,来接收值了,注意 这要和表单中的name属性值想对应才能接收。

然后再自己封装。

--------------------------------------------------------------------

还可以通过在表单中<input type="text" name="Users.username" id="user_name" >

 

这样也可以直接接到值了 自动封转的 name 前边有个实体名.

-------------------------------------------------------------------

大家明白了吗 halohoho O^_^o

你可能感兴趣的:(简单)