使用AJAX完成用户名是否存在异步校验

使用AJAX完成用户名是否存在异步校验:

1.事件触发:

* onblur

2.编写AJAX代码:

* 项Action中提交:传递username参数

3.编写Action

* 接收username:模型驱动接收.

4.* 编写实体类

* User

* User.hbm.xml

* 配置到spring中.

5.编写DAO

* 继承HibernateDaoSupport

* 在配置中注入sessionFactory

6.编写Service:

* 注入UserDao

* 事务管理:

核心代码实现:

function checkUsername(){
    // 获得文件框值:
    var username = document.getElementById("username").value;
    // 1.创建异步交互对象
    var xhr = createXmlHttp();
    // 2.设置监听
    xhr.onreadystatechange = function(){
      if(xhr.readyState == 4){
        if(xhr.status == 200){
          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();
      }
      catch (e){
        try{// Internet Explorer
           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }
        catch (e){
         try{
           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e){}
         }
      }
      return xmlHttp;
     } 
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='green'>用户名可以使用</font>");
    }
    return NONE;
  } 
private UserDao userDao;
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }
  // 按用户名查询用户的方法:
  public User findByUsername(String username){
    return userDao.findByUsername(username);
  } 
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;
  } 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx.xsd">
  <!-- 配置连接池: -->
  <!-- 引入外部属性文件 -->
  <context:property-placeholder location="classpath:jdbc.properties"/>
  <!-- 配置C3P0连接池: -->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.user}"/>
    <property name="password" value="${jdbc.password}"/>
  </bean>
  <!-- Hibernate的相关信息 -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <!-- 注入连接池 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置Hibernate的其他的属性 -->
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.format_sql">true</prop>
        <prop key="hibernate.connection.autocommit">false</prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
      </props>
    </property>
    <!-- 配置Hibernate的映射文件 -->
    <property name="mappingResources">
      <list>
        <value>cn/itcast/shop/user/vo/User.hbm.xml</value>
      </list>
    </property>
  </bean>
  <!-- 事务管理: -->
  <!-- 事务管理器 -->
  <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="checkImgAction" class="cn.itcast.shop.user.action.CheckImgAction" scope="prototype">
  </bean>
  <!-- 用户模块的Action -->
  <bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
    <!-- 注入Service -->
    <property name="userService" ref="userService"/>
  </bean>
  <!-- Service的配置 ===========================-->
  <bean id="userService" class="cn.itcast.shop.user.service.UserService">
    <property name="userDao" ref="userDao"/>
  </bean>
  <!-- Dao的配置 ===========================-->
  <bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
    <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
</beans>
[html] view plain copy 在CODE上查看代码片派生到我的代码片
<?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.devMode" value="false" />
  <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
  <package name="shop" extends="struts-default" namespace="/">
    <global-results>
      <result name="msg">/WEB-INF/jsp/msg.jsp</result>
    </global-results>
    <!-- 配置首页访问的Action -->
    <action name="index" class="indexAction">
      <result name="index">/WEB-INF/jsp/index.jsp</result>
    </action>
    <!-- 配置用户模块的Action -->
    <action name="user_*" class="userAction" method="{1}">
      <result name="registPage">/WEB-INF/jsp/regist.jsp</result>
      <result name="input">/WEB-INF/jsp/regist.jsp</result>
      <result name="loginPage">/WEB-INF/jsp/login.jsp</result>
      <result name="login">/WEB-INF/jsp/login.jsp</result>
      <result name="loginSuccess" type="redirectAction">index</result>
      <result name="quit" type="redirectAction">index</result>
      <result name="checkcodeFail">/WEB-INF/jsp/regist.jsp</result>
    </action>
    <!-- 验证码Action -->
    <action name="checkImg" class="checkImgAction"></action>
  </package>
</struts> 

以上所述是小编给大家介绍的使用AJAX完成用户名是否存在异步校验,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • jquery easyUI中ajax异步校验用户名

    以前无聊写过一个小东西,其中有一个功能就是添加用户,当时并没有考虑用户名重复的问题,今日闲来无事,打算利用ajax的异步刷新来校验用户名是否存在.自己也是新手,刚刚大三,哈哈写的不对的地方请指出. 放上效果图: 首先是编写前的准备 我并不是用原生的js来写的ajax而是用的jqueryeasyUI框架中的ajax,所以在使用之前就必须要引入jquery的js文件. <link rel="stylesheet" type="text/css" href=&quo

  • SSH网上商城之使用ajax完成用户名是否存在异步校验

    小伙伴在上网的时候,需要下载或者观看某些视频资料,更或者是在逛淘宝的时候,我们都需要注册一个用户,当我们填写好各种信息,点击确定的时候,提示用户名已经存在,小编就想,为什么当我们填写完用户名的时候,她就自动提示用户名已经存在,我们也不需要浪费那么多感情,直到填写完那么多的信息之后在提示,在小编最近的项目中,就碰到这个问题,我们可以使用ajax完成用户名是否存在,今天这篇博客,小编就简单的总结一下,如何使用ajax来完成校验,还请小伙伴多多指教哦`(*∩_∩*)′! 首先ajax完成用户名是否存在

  • 使用AJAX完成用户名是否存在异步校验

    使用AJAX完成用户名是否存在异步校验: 1.事件触发: * onblur 2.编写AJAX代码: * 项Action中提交:传递username参数 3.编写Action * 接收username:模型驱动接收. 4.* 编写实体类 * User * User.hbm.xml * 配置到spring中. 5.编写DAO * 继承HibernateDaoSupport * 在配置中注入sessionFactory 6.编写Service: * 注入UserDao * 事务管理: 核心代码实现:

  • ajax实现用户名校验的传统和jquery的$.post方式(实例讲解)

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

  • ThinkPHP框架结合Ajax实现用户名校验功能示例

    本文实例讲述了ThinkPHP框架结合Ajax实现用户名校验功能.分享给大家供大家参考,具体如下: 在模板文件中通过ajax获取到用户名,然后在控制器中将用户名与数据库比较,返回校验结果给模板文件. 模板文件路径shop/Home/View/User/register.html <!--register.html--> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q

  • Extjs表单输入框异步校验的插件实现方法

    一.效果如图所示 特点: 1.异步后台校验不会对用户操作产生阻塞感: 2.可在用户停止输入后自动校验,避免频繁进行无谓的后台校验: 3.以插件方式实现,方便使用: 二.插件源码如下: /** * Created by jiawenjun on 2016/10/19. */ Ext.define('Ext.ux.plugins.FieldAjaxVerify',{ extend: 'Ext.AbstractPlugin', alias: 'plugin.fieldajaxverify', buff

  • 详解javascript传统方法实现异步校验

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

  • 基于jQuery实现的Ajax 验证用户名唯一性实例代码

    JSP部分代码: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <%@include file="/common/header.jsp"%> <title>用户管理</title> <script type="text/javascript&quo

  • javascript将异步校验表单改写为同步表单

    同步表单校验的缺点 响应错误信息时,需要重新加载整个页面(虽然有缓存,客户端仍然需要通过http协议对比每个文件是否有更新,以保持文件最新) 服务器响应错误以后,用户之前所输入的信息全部丢失了,用户需要从头开始填写(部分浏览器帮我们缓存了这些数据) 异步校验表单的初衷 提升用户体验 最大化减少网络请求,减轻服务器压力 下面我们看一个常见的异步表单校验(校验工号在后台是否存在,存在为有效工号) 校验工号 复制代码 代码如下: var BASE_PATH = '${rc.contextPath}';

  • jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)

    弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用. 效果展示        源码下载 HTML 由于本例UI部分使用了Bootstrap,以及使用jQuery插件,因此需要事先载入相关文件,推荐大家使用相关的CDN资源. <link rel="stylesheet" hre

随机推荐