先了解ajax在本次实验中的大概跳转流程:
表单用户名输入框onblur时触发check(form.name)脚本函数----在函数中被指定跳转到checkUser.jsp----在checkUser.jsp中实例化checkName这个类,这个类中含有从是数据库中查找的方法check();
1.表单的书写:
<div class="form-group">
<label for="username">用户名</label><input type="text" required class="form-control" id="username" name="name" οnblur="check(this.value)"/>
<span id="showinfo"></span>
</div>
2.把ajax重构文件引入页面,并且实例化对象,重新回调函数和错误处理函数:
<script type="text/javascript" src="js/jquery-2.1.3.js"></script>
<script type="text/javascript" src="js/AjaxRequest.js"></script>
<script>
function onerror(){
alert("你的操作有误!");
}
function check(userName){
var http_request=new net.AjaxRequest("checkUser.jsp?name="+userName,getResult,onerror,"GET");
}
function getResult(){
alert(this.req.responseText);
}
</script>
3.checkUser.jsp
<body>
<%String username=request.getParameter("name");
checkName name=new checkName();
int flag=name.check(username);
if(flag==1){
out.print("改用户名已被注册");
}
else{
out.println("恭喜你,该用户还没被注册!");}
%>
</body>
4.checkName.class
package model;
import init.HibernateSessionFactory;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class checkName {
public int check(String user){
Session session = null;
Transaction tran=null;
try{
session =HibernateSessionFactory.getSession();
tran=session.beginTransaction();
String hql="select name from TbUser";
Query q=session.createQuery(hql);
List useres=q.list();
Iterator it=useres.iterator();
while(it.hasNext()){
Object username=(Object)it.next();
username=(String)username;
System.out.println(username);
System.out.println(user+"svdcs");
if(user.equals(username)){
tran.commit();
return 1;
}
}
}
catch (Exception e) {
e.printStackTrace();
tran.rollback();// 事务回滚
} finally {
HibernateSessionFactory.closeSession();// 关闭Session
}
return 0;
}
}