用户管理的设计--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系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管 ...
随机推荐
- spring 配置properties 编码
<!-- properties 配置文件 --> <bean id="propertyConfigurer" class="org.springfram ...
- java 学习原生jdbc
public class App { public static void main( String[] args ) { //JDBC驱动 String driverName = "com ...
- NorFlash基础
1. Nor Flash 简介 Nor Flash 闪速存储器具有可靠性高.随机读取速度快的优势,在擦出和编程操作较少而直接执行代码的场合,尤其是纯代码存储的应用中广泛使用. 2. Nor Flash ...
- windows开机启动软件设置
开机启动软件设置 操作步骤如下: 1.按win+r,输入 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup,点击确定: 2.拖动 ...
- Problem09 求完数
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数". 分析:例如6=1+2+3. 编程找出1000以内的所有完数. 假如整数n除以m,结果是无余数的整数,那么我们称m就是n ...
- js随机生成[n,m)的数字(不包括m)
Math.random();//随机生成0到1的数字 Math.floor();//取小整 Math.floor(Math.random()*(最大值 - 最小值) + 最小值) 生成2到8的数:Ma ...
- pip install keras==1.2.1
[该方法仅适用于压缩包中含有setup.py的情况] 先从GitHub上找到想要下载的历史版本,右键复制链接地址. 然后执行命令: pip install https://github.com/ker ...
- Android NDK开发 环境配置(一) 之多重CPU的兼容性
今天我学习Android Studio当中的NDK,为什么要学习NDK呢,是因为领导给我提了一个BUG,这个BUG就是Android 多重CPU怎样兼容性,我现在先说一下,Android Studio ...
- java源文件组成部分
class HelloWorld{ public static void main(String[ ] args) { System.out.print("HelloWorld!!!&quo ...
- PlayMaker Play Sound 和 Audio Play
这两个 Action 都可以播放声音 *Play Sound:只要把声音拖进去就可以: *Audio Play:要求游戏对象要有Audio Source组件.