您的位置:首页 > 编程语言 > Java开发

ajax+struts2“实时”检测用户名是否被占用

2016-08-28 14:29 351 查看

ajax+struts2检测用户名是否被占用

借用ajax,可以实现用户注册时,实时检测用户名是否被占用,更加友好。总不能在用户提交注册信息之后,再告诉他/她用户名已被占用吧,我就碰到过这样的网站。自己照着网上的教程,也搜索过一些知识点,添加了一段ajax+struts2的检测程序。

首先是注册表单页面

js文件

当username对应的文本输入框失去焦点(onblur)时,调用下面的checkUsernameExist()函数



表单页面



对应的action处理类

package com.chris.action;

import java.io.PrintWriter;
import javax.servlet.ServletResponse;
import org.apache.struts2.ServletActionContext;
import com.chris.service.UserService;
import com.opensymphony.xwork2.ActionSupport;

public class UsernameCheck extends ActionSupport  {
private String username;
//业务逻辑组件,使用依赖注入的方式创建实例
private UserService userService;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() throws Exception {
//使用ServletActionContext工具类,得到一个response对象
ServletResponse response = ServletActionContext.getResponse();
PrintWriter writer = response.getWriter();
//检测到已经存在,会返回true
if(userService.checkUsername(username)) {
//为了自己方便,添加的控制台打印语句
System.out.println(username + " already exist");
//write中的内容,会传递到客户端xhr对象的responseText中
//“1”表示已经存在
writer.write("1");
} else {
System.out.println(username + " does not exist");
writer.write("0");
}
//因为重写execute()方法,必须返回一个String字符串。这里返回null,因为不需要返回页面
return null;
}
}


假设已经写好了数据库、PO、DAO和业务逻辑之类的,那么,加一个检测用户名是否被占用的业务逻辑方法就可以了。

业务逻辑方法

//检测用户名是否占用的业务逻辑方法
//用户名已存在,则返回true
public boolean checkUsername(String username) {
if(userDAO.queryByID(username) != null) {
return true;
} else {
return false;
}
}


依赖注入文件配置

在applicationContext.xml中,为UsernameCheck这个Action类注入业务逻辑组件userService。



action.xml文件配置

在action.xml中添加结果文件配置,



由于这里没有返回页面,故没有配置result。注意,这里的class应该配置成applicationContext.xml文件中配置的bean的id,因为是采用依赖注入的方式来实例化类,不再由struts2来根据实现类来实例化,而是通过id来获取一个Action实例。

如有疑问,欢迎指出,共同进步。

参考

http://blog.csdn.net/yichangzxc/article/details/51470068
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax struts2.0