采用ajax实现用户名是否存在校验
1、用户名后面加入οnblur="checkUsername();"
<input type="text" id="username" name="username" class="text" maxlength="20" οnblur="checkUsername();">
2、ajax代码
function checkUsername(){
var username = document.getElementById("username").value;
if(username!=null && username!=''){
//1.创建对象
var xmlhttp;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//2.设置监听
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("spanUsername").innerHTML=xmlhttp.responseText;
}
}
//3.打开链接
var url = "${pageContext.request.contextPath}/user_findByUsername?time="+new Date().getTime()+"&username=" + username;
xmlhttp.open("GET",url,true);
//4.发送
xmlhttp.send(null);
}else{
document.getElementById("spanUsername").innerHTML="<font color='red'>用户名不能为空</font>";
}
}
3、根据上面的 user_findByUsername,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>
<package name="shop" namespace="/" extends="struts-default">
<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>
</action>
</package>
</struts>
4、userAction在applicationContext.xml中的配置:
<bean id="userAction" class="cn.xdy.shop.user.action.UserAction" scope="prototype">
</bean>
5、校验用户名是否存在要查询数据库,需要创建User.java、User.hbm.xml、UserDao.java、UserService.java
User.java省略
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.xdy.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>
UserDao.java要用到hibernate的模板方法,需要继承HibernateDaoSupport,并且在 applicationContext.xml中要配置userDao,如下配置:
<!-- Dao的配置 -->
<bean id="userDao" class="cn.xdy.shop.user.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
User.hbm.xml需要配置在
<!-- 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/xdy/shop/user/vo/User.hbm.xml</value>
</list>
</property>
</bean>
package cn.xdy.shop.user.dao;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.xdy.shop.user.vo.User;
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;
}
}
UserService直接调用UserDao
package cn.xdy.shop.user.service;
import cn.xdy.shop.user.dao.UserDao;
import cn.xdy.shop.user.vo.User;
public class UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public User findByUsername(String username) {
return userDao.findByUsername(username);
}
}
6、UserAction.java
package cn.xdy.shop.user.action;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import cn.xdy.shop.user.service.UserService;
import cn.xdy.shop.user.vo.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven<User> {
private UserService userService;
private User user = new User();
public User getModel() {
return user;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public String registPage() {
return "registPage";
}
/**
* 检验用户是否存在
*
* @param username
* @return
* @throws IOException
*/
public String findByUsername() throws IOException {
User existUser = userService.findByUsername(user.getUsername());
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;
}
}
7、applicationContext.xml中加入如下配置
<!-- 用户类的Action -->
<bean id="userAction" class="cn.xdy.shop.user.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<!-- Service的配置 -->
<bean id="userService" class="cn.xdy.shop.user.service.UserService">
<property name="userDao" ref="userDao"></property>
</bean>
<!-- Dao的配置 -->
<bean id="userDao" class="cn.xdy.shop.user.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
效果图: