用户管理的设计--4.jquery的ajax实现登录名的校验
页面效果
鼠标失去焦点时,不需要刷新页面进行校验,判断登录名是否重复。

实现步骤
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实现登录名的校验的更多相关文章
- 用户管理的设计--3.jquery的ajax实现二级联动
页面效果 实现步骤 1.引入struts整合json的插件包 2.页面使用jquery的ajax调用二级联动的js //ajax的二级联动,使用选择的所属单位,查询该所属单位下对应的单位名称列表 fu ...
- 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件
Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用 一.json数据结构 1.什么是json JSON(J ...
- 【JAVAWEB学习笔记】28_jquery加强:json数据结构、jquery的ajax操作和表单校验插件
Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用 一.json数据结构 1.什么是json JSON(Jav ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...
- jquery和Ajax(异步js和XML)的应用
Ajax不是值一种单一的技术,而是有机的利用了一系列的交互式网页应用相关的技术所形成的的结合体.它的出现,解开了无刷新更新网页的新时代,并代替传统的Web方式和通过隐藏的框架来进行异步提交的趋势,是w ...
- JQuery中使用Ajax实现诸如登录名检测等异步请求Demo
上一篇博客介绍了注册登录时一次性图形验证码的工具类的编写,这篇随笔同样是我在写用jquery中ajax实现登录信息检测的异步请求功能的笔记,在各个网站进行信息用户注册时,需要在不刷新页面的情况下对注册 ...
- [转]linux用户管理
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...
- Linux 用户管理【UID和GID】
Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...
- Linxu用户管理(转)
说明:用户管理的操作涉及root权限,所以以下实例中应该使用sudo或者root用户进行操作. 背景: Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管 ...
随机推荐
- c语言定义指针类型需注意事项
1)在定义说明语句中,指针变量名之前的星号“*“是指针变量的修饰符,也就是说它所修饰的变量是指针变量. 2)指针变量是用它们所指向的对象类型来区分的.如定义 int *ip,类型int并不是指针的类型 ...
- nginx与 Keepalived高可用
1.1 keepalived软件能干什么? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 K ...
- 需要了解的几个Java基础点
关键字 native:表示要调用非Java语言写函数,比如用C语言使用JNI实现的接口.比如windows环境的dll文件.举例:Object.hashcode() 位运算 << n:左移 ...
- Linux字符设备驱动--Led设备驱动
①驱动源码 #include <linux/module.h> #include <linux/init.h> #include <linux/cdev.h> #i ...
- C++ vector类型要点总结(以及各种algorithm算法函数)
概述 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现. 容器向量也是一个类模板.vector是C++标准模 ...
- my06_sysbench install for mysql 并初始化表数据
sysbench安装 ************************************************************** 安装sysbench依赖包 rpm -q autom ...
- hadoop用put上传文件时报错
用命令-put上传文件 报错0 datanode(s) running 原因是进行了多次格式化 解决办法: 停止集群 删除在hdfs中配置的data目录(即在core-site.xml中配置的hado ...
- windows 7 下安装VMWARE 和 red-hat 7 64bit
按F2 进入BIOS: 在inter virtualization technology 选择YES 就可以安装linux 64bit 操作系统了 https://blog.csdn.net/coco ...
- 转 使用隐含Trace参数诊断Oracle Data Pump故障
http://blog.itpub.net/17203031/viewspace-772718/ Data Pump数据泵是Oracle从10g开始推出的,用于取代传统exp/imp工具的数据备份还原 ...
- xml和json互转
开发过程中有些时候需要把xml和json互转,如某钱X接口入参和出参都是xml格式的,十分蛋疼.特写下面工具类,以留用. 需要引用jar: <!-- https://mvnrepository. ...