Struts2 ajax+json账户唯一性验证

来源:互联网 发布:云杉网络 营收 编辑:程序博客网 时间:2024/06/05 13:34

Struts2 ajax+json账户唯一性验证

本节使用struts2框架,通过ajax+json,在页面不刷新的情况下实现账户唯一性验证。

使用struts2框架——json的核心包和依赖包如下:


当我们导入了以上两个包时,就可以在struts.xml定义我们的<package>

<pre name="code" class="html"><package name="json" namespace="/" extends="json-default" ><action name="empJudgement" class="org.great.action.emp.EmpAction" method="judgement"><result type="json"><param name="root">flag</param></result></action></package>


其中,<package>标签上的extends="json-defafult"和<result>、<param>标签中的json—root 参数是固定的。

我们可以在struts2-json-puugin的jar包里面的xml看到它的定义



接下来,看jsp代码:

<body>    <form action="emp_Emp_add" method="post">    <label>姓名:</label><input id="ename" type="text" name="emp.ename" onblur="judgement()"><span id="sp"></span><br/>    <label>工作:</label><input type="text" name="emp.job"><br/>    <input type="submit" value="提交">    </form>  </body>  <script type="text/javascript">  function judgement(){  var ename = $("#ename").val();  $.ajax({  type:"post",  url:"empJudgement",  data:"ename="+ename,  cache:false,  error : function(){  alert("请重试");  },  success: function(data){  alert(data);  if(data){  $("#sp").text("可以注册");  }else{  $("#sp").text("账户已存在");  }  }    })  }  </script>



struts.xml配置:当我们ajax的访问路径为empJudgement时,就会跳转到org.great.action.emp.EmpAction类下的judgement方法中,并且返回的参数为flag。

<package name="json" namespace="/" extends="json-default" ><action name="empJudgement" class="org.great.action.emp.EmpAction" method="judgement"><result type="json"><param name="root">flag</param></result></action>

org.great.action.emp.EmpAction下的judgement方法:

public String judgement(){EmpBean bean = DaoFactory.getEmpDao().findEmpBean_ByName(ename);if(null == bean){flag = true;}else{flag = false;}return "success";}

当获取到ajax传来的ename,就会在数据库就行查询,如果查询出来的是null,即原先账户不存在,就返回一个flag为true,说明账户没有被注册,如果返回的bean是存在的,就返回一个flag为false说明不能注册此账户。当然,flag要定义好,并且给他get、set方法,不然struts框架取不到值

private PreparedStatement pre = null;private ResultSet rs = null;public EmpBean findEmpBean_ByName(String ename) {EmpBean empBean = null;Connection conn = DBUtils.getConn();String sql = "select * from emp where ename = ?";try {pre = conn.prepareStatement(sql);pre.setString(1, ename);rs = pre.executeQuery();if(rs.next()){empBean = new EmpBean();empBean.setEmpNo(rs.getInt(1));empBean.setEname(rs.getString(2));empBean.setJob(rs.getString(3));empBean.setMgr(rs.getInt(4));empBean.setHireDate(rs.getString(5));empBean.setSal(rs.getInt(6));empBean.setComm(rs.getInt(7));empBean.setDeptNo(rs.getInt(8));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{DBUtils.close(conn, pre, rs);}return empBean;}

接下来看演示结果:



1 0