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

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

       首先ajax完成用户名是否存在异步校验,那么我们该如何做呢?在这里,我们要由事件进行触发,也就是说,我们在用户名里面输入的时候,鼠标移开,这个事件叫做onblur,即失去焦点,与其相对的,鼠标放在里面获得焦点,我们称之为onfocus,那么失去焦点,我们该怎么操作呢?首先找到注册页面,在注册页面找到用户名那部分的代码,在后面加上onblur=checkUsername(),校验用户名即可,接着我们来编写方法checkUsername,具体代码如下所示:

<span style="font-size:18px;">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=", true)
    //4、发送
    xhr.send(null);
  }
  function createXmlHttp() {
    var xmlHttp;
    try {
      xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
      try {
        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
       catch (e) {
        try {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
      }
    }
    return xmlHttp;
  }
</span> 

      接着,我们来建立实体Vo,实现模型驱动,自动实现封装,具体代码如下所示:

<span style="font-size:18px;">package cn.itcast.shop.user.vo;
public class User {
  private Integer uid;
  private String username;
  private String password;
  private String name;
  private String email;
  private String phone;
  private String addr;
  private Integer state;
  private String code;
  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;
  }
}</span> 

       我们要接收参数,实现模型驱动,ActionSupport直接实现modelDriven即可,接着来编写我们的ajax代码,需要向action中进行提交,我们来编写UserAction中的代码,具体代码如下所示:

<span style="font-size:18px;">package cn.itcast.shop.user.action;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
 * 用户模块Action的类
 * @author Flower
 *
 */
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='green'>用户名已经存在</font>");
    }
    return NONE;
  }
  /**
   * 用戶注册的方法:
   */
  public String regist(){
    return NONE;
  }
}
</span> 

        接着,我们需要做的就是把service和Dao配置到applicationContext中,代码如下所示:

<span style="font-size:18px;"><!-- Service的配置 =========================== -->
  <bean id="userService" class="cn.itcast.shop.user.service.UserService">
    <property name="userDao" ref="userDao"/>
  </bean>
  <!-- UserDao的配置 =========================== -->
   <bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean> </span> 

       配置好了之后,我们需要在UserDao里面完成查询,具体代码如下所示:

<span style="font-size:18px;">package cn.itcast.shop.user.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import java.util.List;
import cn.itcast.shop.user.vo.User;
/**
 * 用户模块持久层代码
 * @author Flower
 *
 */
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;
    }
}
</span> 

     接着,我们需要在service里面完成对Dao的调用,具体代码如下所示:

<span style="font-size:18px;">package cn.itcast.shop.user.service;
import org.springframework.transaction.annotation.Transactional;
import cn.itcast.shop.user.dao.UserDao;
import cn.itcast.shop.user.vo.User;
/**
 * 用户模块业务层代码
 * @author Flower
 *
 */
@Transactional
public class UserService {
  //注入UserDao
  private UserDao userDao;
  public void setUserDao(UserDao userDao){
    this.userDao =userDao;
  }
  //按用户名查询用户的方法
  public User findByUsername (String username){
    return userDao.findByUsername(username);
  }
}
</span> 

      接着我们需要在UserAction中进行调用,具体代码如下所示:

<span style="font-size:18px;">package cn.itcast.shop.user.action;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import cn.itcast.shop.user.service.UserService;
import cn.itcast.shop.user.vo.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
 * 用户模块Action的类
 * @author Flower
 *
 */
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='green'>用户名已经存在</font>");
    }
    return NONE;
  }
  /**
   * 用戶注册的方法:
   */
  public String regist(){
    return NONE;
  }
}
</span>

       最后,我们来编写映射文件里面的内容,具体代码如下所示:

<span style="font-size:18px;"><?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"/>
      </id>
      <property name="username"/>
      <property name="password"/>
      <property name="name"/>
      <property name="email"/>
      <property name="phone"/>
      <property name="addr"/>
      <property name="state"/>
      <property name="code"/>
    </class>
  </hibernate-mapping></span> 

      不要忘记了,要把她陪到applicationContext里面,具体代码如下所示:

<span style="font-size:18px;"><!-- 配置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>
</span> 

代码到此结束,下面给大家展示下效果图:  

小编总结:    

实现的思路是这样滴`(*∩_∩*)′,首先是由onblur进行事件触发,第二,编写ajax的代码,向action中提交,传递参数username,第三步,编写action,接收username,实现模型驱动配置到spring中,第四步,编写DAO,集成HibernateDaoSupport,在配置中注入sessionFactory,最后编写Service,注入UserDao,还有事务管理,一个简单的demo,还请小伙伴多多指教,SSH网上商城,精彩未完待续~~~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ajax异步校验
, 异步校验
用户名校验
ajax异步校验、ajax异步验证用户名、ajax校验用户名、java ajax校验用户名、ssh ajax验证用户名,以便于您获取更多的相关知识。

时间: 2024-10-24 15:58:00

SSH网上商城之使用ajax完成用户名是否存在异步校验_AJAX相关的相关文章

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

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

【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于CSDN博客定期更新排名)

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51387378 目录(?)[+]         上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重启一下服务器才能重新同步后台数据,然后刷新首页才能同步数据.这明显不是我们想要的效果,一般这种网上商城首页肯定不是人为手动同步数据的,那么如何解决呢?我们需要用到线程和定时器来定时自动同步首页数据. 1. Timer和Timer

用AJAX实现页面登陆以及注册用户名验证的简单实例_AJAX相关

AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX 是一种用于创建快速动态网页的技术.其核心是 JavaScript 对象 XMLHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XMLHttpRequest使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户. 通过在后台与

Ajax技术组成与核心原理分析_AJAX相关

本文主要为大家分析了Ajax技术组成原理,供大家参考,具体内容如下 1.Ajax特点:局部刷新.提高用户的体验度,数据从服务器商加载  2.AJax的技术组成不是新技术,而是之前技术的整合 Ajax: Asynchronous Javascript And Xml;(异步的JavaScript和XML) 包括的技术:JavaScript.XML.CSS.XMLHttpRequest 异步:发送请求以后,不等结果,由回调函数处理. JavaScript:向服务器发送请求,获得返回结果,更新页面 X

基于ajax实现无刷新分页的方法_AJAX相关

本文实例讲述了基于ajax实现无刷新分页的方法.分享给大家供大家参考.具体如下: 在普通的分页中,一旦页码改变,则url改变,整个页面都会刷新,如果我们希望页码的改变不影响整个网页的变动,可以使用ajax技术. AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 通过客户端html代码,用ajax把服务器中的数据通过get方式传递过来,显示在html中. <!doct

Ajax实现页面自动刷新实例解析_AJAX相关

Ajax简介: AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和XML(标准通用标记语言的子集). AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必须重

Ajax学习笔记---3种Ajax的实现方法【推荐】_AJAX相关

Ajax:  Asynchronous JavaScript and Xml , 异步js脚本和xml , 常用来实现页面局部的异步刷新, 对提高用户体验有很大帮助. Xml在多语言时较有优势, 但Ajax技术实际上较多采用Json对象而不是Xml来处理数据. (一) Ajax历史....了解性知识 Ajax归属于Web前端开发技术, 与javascript有着异常紧密的联系. Ajax就是一种实现异步通信无刷新的技术, 而这种技术可以有很多种实现方式. 浏览器的鼻祖网景(NetScape)公司