Struts2 ajax+json账户唯一性验证

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" οnblur="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 block
			e.printStackTrace();
		} finally{
			DBUtils.close(conn, pre, rs);
		}
		return empBean;
	}

接下来看演示结果:



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值