用的框架:struts2、Spring、Hibernate
jsp界面(部分):
<script>
function checkUsername(){
//获得文本框的值
var username = document.getElementById("username").value;
//传统Ajax校验
//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_findByUsername.action?time="
+new Date().getTime()+"&&username="+username,true);
//4.发送
xhr.send(null);
}
function createXmlHttp(){
var xmlHttp;
try{
xmlHttp = new XMLHttpRequest();
}
catch(e){
try{
xmlHttp = new ActiveXObject("Msxm12.XMLHTTP");
}
catch(e){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}
return xmlHttp;
}
<body>
<input type="text" id="username" name="username" onblur="checkUsername()">
</body>
Action中代码:
/**
* ajax进行异步校验用户名的执行方法
* @throws IOException
*/
public String findByUsername() 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;
}
service层调dao层,dao层查询数据库:
//根据名字查询是否有该用户
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;
}