使用AJAX完成用户名是否存在异步校验
使用AJAX完成用户名是否存在异步校验:
1.事件触发:
*onblur
2.编写AJAX代码:
*项Action中提交:传递username参数
3.编写Action
*接收username:模型驱动接收.
4.*编写实体类
*User
*User.hbm.xml
*配置到spring中.
5.编写DAO
*继承HibernateDaoSupport
*在配置中注入sessionFactory
6.编写Service:
*注入UserDao
*事务管理:
核心代码实现:
functioncheckUsername(){
//获得文件框值:
varusername=document.getElementById("username").value;
//1.创建异步交互对象
varxhr=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="+newDate().getTime()+"&username="+username,true);
//4.发送
xhr.send(null);
}
functioncreateXmlHttp(){
varxmlHttp;
try{//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e){
try{//InternetExplorer
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}
returnxmlHttp;
}
publicStringfindByName()throwsIOException{
//调用Service进行查询:
UserexistUser=userService.findByUsername(user.getUsername());
//获得response对象,项页面输出:
HttpServletResponseresponse=ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
//判断
if(existUser!=null){
//查询到该用户:用户名已经存在
response.getWriter().println("<fontcolor='red'>用户名已经存在</font>");
}else{
//没查询到该用户:用户名可以使用
response.getWriter().println("<fontcolor='green'>用户名可以使用</font>");
}
returnNONE;
}
privateUserDaouserDao;
publicvoidsetUserDao(UserDaouserDao){
this.userDao=userDao;
}
//按用户名查询用户的方法:
publicUserfindByUsername(Stringusername){
returnuserDao.findByUsername(username);
}
publicUserfindByUsername(Stringusername){
Stringhql="fromUserwhereusername=?";
List<User>list=this.getHibernateTemplate().find(hql,username);
if(list!=null&&list.size()>0){
returnlist.get(0);
}
returnnull;
}
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="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-placeholderlocation="classpath:jdbc.properties"/>
<!--配置C3P0连接池:-->
<beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource">
<propertyname="driverClass"value="${jdbc.driver}"/>
<propertyname="jdbcUrl"value="${jdbc.url}"/>
<propertyname="user"value="${jdbc.user}"/>
<propertyname="password"value="${jdbc.password}"/>
</bean>
<!--Hibernate的相关信息-->
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--注入连接池-->
<propertyname="dataSource"ref="dataSource"/>
<!--配置Hibernate的其他的属性-->
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<propkey="hibernate.show_sql">true</prop>
<propkey="hibernate.format_sql">true</prop>
<propkey="hibernate.connection.autocommit">false</prop>
<propkey="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!--配置Hibernate的映射文件-->
<propertyname="mappingResources">
<list>
<value>cn/itcast/shop/user/vo/User.hbm.xml</value>
</list>
</property>
</bean>
<!--事务管理:-->
<!--事务管理器-->
<beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory"ref="sessionFactory"/>
</bean>
<!--开启注解事务-->
<tx:annotation-driventransaction-manager="transactionManager"/>
<!--Action的配置===========================-->
<!--首页访问的Action-->
<beanid="indexAction"class="cn.itcast.shop.index.action.IndexAction"scope="prototype">
</bean>
<!--配置验证码Action-->
<beanid="checkImgAction"class="cn.itcast.shop.user.action.CheckImgAction"scope="prototype">
</bean>
<!--用户模块的Action-->
<beanid="userAction"class="cn.itcast.shop.user.action.UserAction"scope="prototype">
<!--注入Service-->
<propertyname="userService"ref="userService"/>
</bean>
<!--Service的配置===========================-->
<beanid="userService"class="cn.itcast.shop.user.service.UserService">
<propertyname="userDao"ref="userDao"/>
</bean>
<!--Dao的配置===========================-->
<beanid="userDao"class="cn.itcast.shop.user.dao.UserDao">
<propertyname="sessionFactory"ref="sessionFactory"/>
</bean>
</beans>
[html]viewplaincopy在CODE上查看代码片派生到我的代码片
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.devMode"value="false"/>
<constantname="struts.enable.DynamicMethodInvocation"value="true"/>
<packagename="shop"extends="struts-default"namespace="/">
<global-results>
<resultname="msg">/WEB-INF/jsp/msg.jsp</result>
</global-results>
<!--配置首页访问的Action-->
<actionname="index"class="indexAction">
<resultname="index">/WEB-INF/jsp/index.jsp</result>
</action>
<!--配置用户模块的Action-->
<actionname="user_*"class="userAction"method="{1}">
<resultname="registPage">/WEB-INF/jsp/regist.jsp</result>
<resultname="input">/WEB-INF/jsp/regist.jsp</result>
<resultname="loginPage">/WEB-INF/jsp/login.jsp</result>
<resultname="login">/WEB-INF/jsp/login.jsp</result>
<resultname="loginSuccess"type="redirectAction">index</result>
<resultname="quit"type="redirectAction">index</result>
<resultname="checkcodeFail">/WEB-INF/jsp/regist.jsp</result>
</action>
<!--验证码Action-->
<actionname="checkImg"class="checkImgAction"></action>
</package>
</struts>
以上所述是小编给大家介绍的使用AJAX完成用户名是否存在异步校验,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!