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

1.事件触发--onblur

<td><!-- onblur用户离开输入框的时候执行 -->
  <input type="text" id="username" name="username" class="text" maxlength="20" onblur="checkUsername()">
  <span id="span1"></span>
</td>

2.编写Ajax代码

//使用Ajax完成用户名是否异步的校验
	function checkUsername(){

		//获得文本框的值
		var username=document.getElementById("username").value;
		//1.创建异步交互对象Xml

		var xhr=createXmlHttp();
		//2.设置监听
		xhr.onreadystatechange=function(){
		// 0 未连接 1 打开连接 2 发送请求 3 交互 4 完成交互,接手响应
			if (xhr.readyState==4){
				if(xhr.status==200){//表示处理结果ok
					document.getElementById("span1").innerHTML=xhr.responseText;
				}
			}
		}
		//3.打开链接
		xhr.open("GET","${pageContext.request.contextPath}/user_findByName.action?time="+new Date().getTime()+"&username=" +username,true);
		//4.发送
		xhr.send(null);

	}

	function createXmlHttp(){
		var xmlHttp;
		try{ //Firefox ,Opera 8.0+,Safari
			xmlHttp=new XMLHttpRequest("Msxml2.XMLHTTP");
		}catch(e){
			try{ //Internet Explorer
				xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){

				try{
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e){

				}
			}
		}
		return xmlHttp;
	}

3.编写Action

  接受username:模型驱动接受

import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;

import com.opensymphony.xwork2.ActionSupport;
/*
 * 用户模块Action的类
 * @author 王美
 *
 */
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<User>{
	//模型驱动要使用的对象
	private User user=new User();
	public User getModel(){
		return user;
	}
	//注入UserService
	private UserService userService;

	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	/*
	 * 跳转到注册页面的执行方法
	 *
	 */

	public String registPage(){
		return "registPage";
	}

	/**
	 * AJAX进行异步校验用户名的执行方法
	 * @throws IOException
	 */
	public String findByName() throws IOException{
		//调用Service进行查询
		User existUser = userService.findByUsername(user.getUsername());
		//获得response对象,项页面输出
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setContentType("text/html;charset=UTF-8");
		//判断
		if (existUser!=null){
			//查询到该用户:用户名已经存在
			response.getWriter().println("<font color=‘red‘>用户名已经存在</font>");
		}else{
			//没有查询到该用户:用户名可以使用
			response.getWriter().println("<font color=‘greem‘>用户名可以使用</font>");
		}
		return NONE;
	}
}

  编写实体类

    User

package cn.itcast.shop.user.vo;
/*
 * 用户模块实体类:
 * @author
 * CREATE TABLE `user` (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `addr` varchar(255) DEFAULT NULL,
  `state` int(11) DEFAULT NULL,
  `code` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
 * */

public class User {
	private Integer uid; //用户id
	private String username;//用户名
	private String password;//用户密码
	private String name;//用户姓名
	private String email;//用户Email
	private String phone;//用户电话
	private String addr; //用户地址
	private Integer state;//用户状态:激活
	private String code;//

	//自动生成get,set, Source--Generate Getters and Setters
	public Integer getUid() {
		return uid;
	}
	public void setUid(Integer uid) {
		this.uid = uid;
	}
	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 String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public Integer getState() {
		return state;
	}
	public void setState(Integer state) {
		this.state = state;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}

}

    User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>
    	<class name ="cn.itcast.shop.user.vo.User" table="user">
    		<id name="uid">
    			<generator class="native"></generator>
    		</id>
    		<property name="username"></property>
    		<property name="password"></property>
    		<property name="name"></property>
    		<property name="email"></property>
    		<property name="phone"></property>
    		<property name="addr"></property>
    		<property name="state"></property>
    		<property name="code"></property>
    	</class>
    </hibernate-mapping>

    配置到Spring中

4.编写DAO

  继承HibernateDaoSupport

package cn.itcast.shop.user.dao;
import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.itcast.shop.user.vo.User;
/*
 * 用户模块持久层代码
 * @author
 * */
public class UserDao extends HibernateDaoSupport{

	//按照名称查询是否有该用户:
	public User findByUserName(String username){
		String hql="from User where username=?";
		List<User> list =this.getHibernateTemplate().find(hql,username);
		if (list!=null && list.size()>0){
			return list.get(0);
		}
		return null;
	}
}

    配置文件中注入sessionFactory

5.编写Service

  注入UserDao

事务管理

<!-- 事务管理: -->
	<!-- 事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>

	<!-- 开启注解事务 -->
	<tx:annotation-driven transaction-manager="transactionManager" />

 <!--================================== Action配置============================================================ -->

	<!-- 首页访问的Action -->
	<bean id="indexAction" class="cn.itcast.shop.index.action.IndexAction" scope="prototype">
	</bean>

	<!-- 用户模块的Action -->
	<bean id ="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
		<!-- 注入Service -->
		<property name="userService" ref="userService"></property>
	</bean>

	<!--================================== Service配置============================================================ -->
	<bean id="userService" class="cn.itcast.shop.user.service.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>

	<!-- =================================Dao配置 ===================================================== -->
	<bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
				
时间: 2024-12-14 18:21:42

使用Ajax完成用户名异步校验--【SSH】的相关文章

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

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

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

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

ajax实现用户名校验的传统和jquery的$.post方式

第一种:传统的ajax异步请求,后台代码以及效果在最下边 首先我们在eclipse中创建一个注册页面regist.jsp,创建一个form表单,注意,由于我们只是实现用户名校验的效果,下边红色部门是我们需要研究对象,所以其他的部门可以忽略不看. 内容如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><

【项目实战】---使用ajax完毕username是否存在异步校验

小伙伴在上网的时候.须要下载或者观看某些视频资料,更或者是在逛淘宝的时候.我们都须要注冊一个用户,当我们填写好各种信息,点击确定的时候.提示username已经存在.小编就想,为什么当我们填写完username的时候,她就自己主动提示username已经存在.我们也不须要浪费那么多感情.直到填写完那么多的信息之后在提示,在小编近期的项目中,就碰到这个问题.我们能够使用ajax完毕username是否存在.今天这篇博客.小编就简单的总结一下,怎样使用ajax来完毕校验,还请小伙伴多多不吝赐教哦`(

AJAX异步校验

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

利用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异步校验

异步验证管理员帐号方法: /* 异步验证管理员帐号 */ 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

使用ajax验证用户名重复

继上次的用户注册登录案例之后,对其中的部分功能再做进一步改进.上一版中用户提交表单后才对用户名进行校验,虽然做了回显,但还是感觉功能弱了些.为了能有更好用户体验,不是在用户提交表单后才给提示,而是在用户输入用户名后就立即对该用户名进行数据库校验,经过晚上的测试现在可以使用纯js版和jquery版. 准备工作,先编写好验证用户名重复的后台Servlet程序,然后在jsp或html中使用js对用户名进行验证,当用户输入用户名文本框推动焦点时立即触发验证.下面是jquery代码. <%@ page l

学习aiax(javascript)--页面无刷新用ajax检查用户名是否已注册(POST方式)

1.jsp代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"