力所能及之使用Struts控制器异步校验用户名是否重复

操作系统:Windows 7

应用程序服务器:apache-tomcat-6.0.18

开发工具:MyEclipse8.6

Java版本:JDK1.6

MyBatis: 3.2.2

Struts版本:struts-2.3

jQuery版本:jquery-1.4.2.js

MySql版本: 5.0 MySQL Community Server (GPL)

mysql-connector-java:5.0.18

2013年4月16日注:本例中采用的JSON数据格式,推荐使用性能更好的jackson进行序列化,不要使用json-lib

关键点:

1.引入包:struts2对数据进行json序列化,必须要用到struts2的json-lib,struts2-json-plugin包;

2.json数据处理:异步提交的数据采用json格式,struts2-json-plugin会对数据进行json处理,所以struts2配置文件struts.xml中的package节点的extends必须是:extends="json-default";

例如:<package name="default" namespace="/test" extends="json-default">

3.同样的由于返回的是json数据,所以result的类型也必须采用json;

注意:struts2只能在引入json-lib,struts2-json-plugin包时,result的type属性设定json才不会报错:<result name="userInfo" type="json"></result>

4.针对异步提交,action的result节点值应该为空,即不能再转向(例如:只能为<result name="userInfo" type="json"></result>);

时序:

绿色代表客户端请求;紫色代表从数据库返回到客户端。

jsp-----(表单提交)---->jQuery------(ajax异步)----->Struts2-----(action取得json数据)----->调用service------->其它(mybatis等)-----(model)----->DB

DB----(model)------>mybatis--------->service-------Struts2(action,result)------->jQuery(ajax)---------->jsp

数据表结构

领域模型

package qh.zcy.entity;

import java.util.Date;

public class UserInfo {

    private Integer id;

    private String username;

    private String password;

    private Integer age;

    private Date insertdata;

	public UserInfo(Integer id, String username, String password, Integer age,
			Date insertdata) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.age = age;
		this.insertdata = insertdata;
	}

	public UserInfo() {
		super();
	}
    @Override
    public String toString() {
    	// TODO Auto-generated method stub
    	return "id="+id+",username="+username+",password="+password+",age="+age+",insertdata="+insertdata;
    }
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public Date getInsertdata() {
		return insertdata;
	}

	public void setInsertdata(Date insertdata) {
		this.insertdata = insertdata;
	}

}

UserinfoMapper.xml

底层BaseDaoImpl.java

public int isIn(Map<String, String> isInMap){
		SqlSession sqlSession=GetSqlSession.getSqlSession();
		int count=sqlSession.selectOne("qh.zcy.dao.UserInfo.isIn", isInMap);
		return count;
	}

UserInfoDaoImpl.java

public class UserInfoDaoImpl implements UserInfoDao {

	private BaseDao dao=GetBaseDao.getBaseDao();

	@Override
	public int isIn(Map<String, String> isInMap) {
		// TODO Auto-generated method stub
		int count=-1;
		try {
			count=dao.isIn(isInMap);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			GetSqlSession.rollback();
		}finally{
			GetSqlSession.commit();
		}
		return count;
	}

}

业务层UserInfoServiceImpl.java

public class UserInfoServiceImpl implements UserInfoService {

	private UserInfoDao dao=new UserInfoDaoImpl();
	@Override
	public boolean isIn(Map<String, String> isInMap) {
		// TODO Auto-generated method stub
		boolean flag=false;
		int count =dao.isIn(isInMap);
		Log.getLog().info("count="+count);
		if(count >0){
			flag=false;
		}
		else{
			flag=true;
		}
		return flag;
	}

}

Struts控制器IsInAction.java

public class IsInAction extends ActionSupport{

	private String msg;
	private String username;
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		UserInfoService service=new UserInfoServiceImpl();
		Log.getLog().info("username="+username);
		Map<String, String> isInMap=new HashMap<String, String>();
		isInMap.put("username", username);
		@SuppressWarnings("unused")
		boolean flag=service.isIn(isInMap);
		Log.getLog().info("flag="+flag);
		if(flag==false){
			this.setMsg("该用户名已存在");
		}else{
			this.setMsg("你可以使用这个用户名");
		}
		return SUCCESS;
	}
}

struts.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

	<struts>
	    <constant name="struts.action.extension" value="action"></constant>
	    <constant name="struts.devMode" value="true"></constant>

	    <package name="JSONName" namespace="/" extends="json-default">
	        <action name="isIn" class="qh.zcy.action.IsInAction">
	            <result type="json" name="success"></result>

	        </action>

	    </package> 

	</struts>

表现层 json ajax jquery

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>注册UserInfo</title>

	<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
	<script type="text/javascript">
	   $(function(){
	      $("#username").mouseleave(function(){
                var username=$("#username").val();
                //alert("username="+username);
                if(username==""){
                   $("#msg").html("用户名不为空");
                   return ;
                }
	            $.ajax({
                url:'isIn.action',
                type:'POST',
                data:"username="+username,
                dataType:'json',
                success:function (data) {
                    $("#msg").html(data.msg);
                }
               });
             $("#username").keydown(function(){ 

	                  $("#msg").html(null);
	             });
	    });

	    });

	</script>
  </head>

      <body>
        <form action="ajax.do" method="post">
           <p>用户名:<input type="text" name="username" id="username"/><div id="msg"></div> </p>
           <p>密码:<input type="password" name="password" id="password"/></p>
           <p><input type="button" name="login" id="login" value="登陆"/></p>  

        </form>
    </body>
</html>

我的工程:

时间: 2025-01-14 22:31:21

力所能及之使用Struts控制器异步校验用户名是否重复的相关文章

关于ajax+jsp实现异步校验用户名是否存在的实例(.txt文本)

<html> <head> <title>用户注册</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script language="javascript" type="text/javascript"> <!-- //定义用于存储XMLHttp

异步校验用户名是否存在

第一步: 导入jquery <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script> 第二步: 建个表单和输入框 <body> <form > 输入用户名:<input type="text" id="username" > </form> </body> 第三

使用Ajax完成用户名异步校验--【SSH】

1.事件触发--onblur <td><!-- onblur用户离开输入框的时候执行 --> <input type="text" id="username" name="username" class="text" maxlength="20" onblur="checkUsername()"> <span id="span1&quo

AJAX异步校验

前台JS代码 /*异步验证用户名的输入格式以及是否存在*/ function CheckUsername(){ /*取到用户名输入框*/ var nametxt = document.getElementById("username"); /*获取输入的用户名值*/ var username = nametxt.value; /*获取到装错误信息的span框*/ var sp = document.getElementById("usernameError"); v

基于AJAX用户注册信息异步校验

周末无事,自己写了一个用户注册信息的,异步校验.不多说,直接上源码: check.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+reque

问答项目---登陆账号密码登陆做AJAX异步校验

异步验证管理员帐号方法: /* 异步验证管理员帐号 */ public function checkAccount(){ if(!IS_AJAX){echo "页面不存在";die();}; $where = array( //'account' => $_POST['username'] 'account' => I('post.username') ); if(M('admin')->where($where)->find()){ echo 1; }else

网页中使用传统方法实现异步校验详解

学习JavaScript异步校验时往往是从最传统的XMLHttpRequest学起,今天星期六,我来谈一下对传统校验的认识: 代码1--index.jsp文件: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String basePath = request.getScheme()+":

利用ajax异步校验验证码(转)

利用ajax异步校验验证码 示例结果如图所示 具体步骤如下: step1: jsp页面及js脚本 [html] view plain copy print? <%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %> <html> <head> <title>form</title> <script type="

AJAX:校验用户名是否被注册

1. ajax是什么? * asynchronous javascript and xml:异步的js和xml * 它能使用js访问服务器,而且是异步访问! * 服务器给客户端的响应一般是整个页面,一个html完整页面!但在ajax中因为是局部刷新,那么服务器就不用再响应整个页面!而只是数据! > json:它是js提供的数据交互格式,它在ajax中最受欢迎! 2. 异步交互和同步交互 * 同步: > 发一个请求,就要等待服务器的响应结束,然后才能发第二个请求!中间这段时间就是一个字"