页面效果

  鼠标失去焦点时,不需要刷新页面进行校验,判断登录名是否重复。


实现步骤

1.引入struts2-json-plugin-2.5.10.1插件包

2.页面使用jquery的ajax实现后台校验js

/**校验登录名是否出现重复*/
function checkUser(o){
//alert(o.value);//dom的写法
//alert($(o).val());//jquery的写法
var logonName = $(o).val();
//以登录名作为查询条件,查询该登录名是否在数据库表中存在记录
$.post("elecUserAction_checkUser.do",{"logonName":logonName},function(data){
//如果栈顶是模型驱动的对象,取值的时候应该使用data.message的方式
//如果栈顶是模型驱动的对象的某个属性,取值的时候应该使用data即可
if(data==1){
$("#check").html("<font color='red'>登录名不能为空</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else if(data==2){
$("#check").html("<font color='red'>登录名已经存在</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else{
$("#check").html("<font color='green'>登录名可以使用</font>");
$("#BT_Submit").attr("disabled","");
}
});
}

可以看到data作为标识符来判断登录名是否重复,所以在实体类ElecUser.java中加入非持久化javabean属性

//检查登录名是否重复标识符
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

3.在Action类的代码中定义checkUser():将String类型的message放置到栈顶

/**
* @Name: checkUser
* @Description: 使用jquery的ajax完成登录名的后台校验,判断是否数据库中存在,保证登录名惟一
* @Parameters: 无
* @Return: 使用struts2的json插件包
*/
public String checkUser(){
//1:获取登录名
String logonName = elecUser.getLogonName();
//2:判断登录名是否出现重复
String message = elecUserService.checkUser(logonName);
//放置到栈顶
elecUser.setMessage(message);//栈顶对象是ElecUser对象
//ValueUtils.putValueStack(message);//栈顶对象是String类型的属性
return "checkUser";
}

这里面调用了service类的checkUser(logonName)方法,得到标识符的值,然后放入栈顶

4.在Service类的代码中查询message标识的值

/**
* @Name: checkUser
* @Description: 判断登录名是否存在
* @Parameters: logonName 登录名
* @Return: String:判断登录名是否出现重复,返回一个标识message属性
* message=1 表示登录名为空,不可以保存
* message=2 表示登录名存在,不可以保存
* message=3 表示登录名不存在,可以保存
*/
@Override
public String checkUser(String logonName) {
String message="";
if(StringUtils.isNotBlank(logonName)){
//以登录名作为查询条件,查询数据库
String condition=" and o.logonName = ?";
Object[] params={logonName};
List<ElecUser> list = elecUserDao.findCollectionByConditionNoPage(condition, params, null);
//表示登录名存在,不可以保存
if(list!=null&&list.size()>0){
message="2";
}
//表示登录名不存在,可以保存
else{
message="3";
}
}
//登录名为空
else{
message="1";
}
return message;
}

5.在struts.xml中添加

<result name="checkUser" type="json">
  <!-- root指定message表示查找栈顶是否有message属性,如果有,直接通过message的get方法,获取值放入栈顶 -->
<param name="root">message</param>
<!--对象的某个属性被json化-->
<param name="includeProperties">message</param>
</result>

这里参数名root表示的是如果标识符message是放入elecUser对象中,栈顶是ElecUser对象时,直接通过message的get方法获得message属性值放入栈顶,页面Js中就不需要使用data.message来取值。具体可以看struts插件包源代码:

protected Object findRootObject(ActionInvocation invocation) {
Object rootObject;
//查找栈顶是否有message属性
if (this.root != null) {
//如果对象有message属性,直接通过message的get方法,获取值放入栈顶
ValueStack stack = invocation.getStack();
rootObject = stack.findValue(root);
} else {
rootObject = invocation.getStack().peek(); // model overrides action
}
return rootObject;
} protected String createJSONString(HttpServletRequest request, Object rootObject) throws JSONException {
String json = JSONUtil.serialize(rootObject, excludeProperties, includeProperties, ignoreHierarchy,
enumAsBean, excludeNullProperties, defaultDateFormat);
json = addCallbackIfApplicable(request, json);
return json;
}

用户管理的设计--4.jquery的ajax实现登录名的校验的更多相关文章

  1. 用户管理的设计--3.jquery的ajax实现二级联动

    页面效果 实现步骤 1.引入struts整合json的插件包 2.页面使用jquery的ajax调用二级联动的js //ajax的二级联动,使用选择的所属单位,查询该所属单位下对应的单位名称列表 fu ...

  2. 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用   一.json数据结构 1.什么是json JSON(J ...

  3. 【JAVAWEB学习笔记】28_jquery加强:json数据结构、jquery的ajax操作和表单校验插件

    Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用 一.json数据结构 1.什么是json JSON(Jav ...

  4. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

  5. jquery和Ajax(异步js和XML)的应用

    Ajax不是值一种单一的技术,而是有机的利用了一系列的交互式网页应用相关的技术所形成的的结合体.它的出现,解开了无刷新更新网页的新时代,并代替传统的Web方式和通过隐藏的框架来进行异步提交的趋势,是w ...

  6. JQuery中使用Ajax实现诸如登录名检测等异步请求Demo

    上一篇博客介绍了注册登录时一次性图形验证码的工具类的编写,这篇随笔同样是我在写用jquery中ajax实现登录信息检测的异步请求功能的笔记,在各个网站进行信息用户注册时,需要在不刷新页面的情况下对注册 ...

  7. [转]linux用户管理

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  8. Linux 用户管理【UID和GID】

    Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...

  9. Linxu用户管理(转)

    说明:用户管理的操作涉及root权限,所以以下实例中应该使用sudo或者root用户进行操作. 背景: Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管 ...

随机推荐

  1. js判断字符串是否有下划线

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. P2895 [USACO08FEB]流星雨Meteor Shower

    传送门 预处理出每个位置最早被摧毁的时间,在此之前都可以走 直接dfs加个记忆化和最优性剪枝就好了 一定要注意流星的边界,如果波及到负数坐标的位置不要去考虑会RE 一定要考虑流星砸到边界的情况 如 ( ...

  3. poj1964最大子矩阵 (单调栈加枚举)

    题目传送门 题目大意: 一个矩阵中,求F组成的矩阵的面积,(答案乘以三). 思路:n如果是小于100的,就可以通过前缀和,然后三重循环暴力找,和poj1050很像,但由于是1000,就不可以了,时间复 ...

  4. 及时从数据库中取得数据填放进Form表单的多选框中

    #写上以下代码就不用担心数据库添加了数据而不能及时获取了 def __init__(self, *args, **kwargs): #每次创建Form1对象时执行init方法 super(Form1, ...

  5. AdvancedEncryptionStandard

    import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.spec. ...

  6. 随性练习:excel中文字和链接存到html文件

    这是一个简单的练习,主要是将excel中文字和链接存到html文件中,并且可通过点击文字直通链接 excel格式如下图示,我这里得excel是07版的,所以用到xlrd模块 代码: import xl ...

  7. Rest Framework简介 和 RESTful API 设计指南

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  8. Angular JS ng-model对<select>标签无效的情况

    使用场景一: <select ng-if="item.award_type==1" id="award{{$index+1}}" name="X ...

  9. my.梦幻手游_XP

    1.http://my.netease.com/thread-459708-1-1.html 2. 3.

  10. 转 JDBC连接数据库(二)——连接池

    https://www.cnblogs.com/xiaotiaosi/p/6398371.html 数据库保持长连接,不过一直都是idle,除非有用户激活连接,这样后果是无法删除用户,但是不影响数据库 ...