3.用户模块:用户名是否存在校验

采用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>

效果图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值