使用struts2+Ajax+jquery验证用户名是否已被注册


Posted in Javascript onMarch 22, 2016

推荐阅读:JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册

在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,今天正好写了这个需求,把详细代码和所遇到的问题贴过来.在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面的例子,我们只希望返回一个1和0有助于进行后续判断即可,没必要返回json类型,返回一个text字符串就可以了.

regist.jsp(这里只提供<script>部分):

<script type="text/javascript">
$(function() {
$("#userNiName").blur(function() {
var val = $(this).val();
val = $.trim(val);
var $this = $(this);
if (val != "") {
//把当前节点后面的所有 font 兄弟节点删除
$this.nextAll("font").remove();
var url = "user_checkName";
var args = {
"userNiName" : val,
"time" : new Date()
};
$.post(url, args, function(data) {
//表示可用
if (data == "1") {
$this.after("<font color='green'>用户名可用!</font>");
}
//不可用
else if (data == "0") {
$this.after("<font color='red'>用户名已被注册!</font>");
}
//服务器错误
else {
alert("服务器错误!");
}
});
} else {
$(this).val("");
$this.focus();
}
});
})
</script>

这里我是用了Jquery.post(url,args,function(data){..})函数提交ajax请求到指定url,并且携带参数args,最后用一个回调函数处理请求返回结果data.

UserAction:

public class UserAction extends ActionSupport implements ModelDriven<User>{
private User user=new User();
private UserService userService;
private InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
//检验用户昵称是否存在
public String checkName() throws UnsupportedEncodingException{
System.out.println("进入ajax检验");
String userNiName=user.getUserNiName();
if(userService.findUserByName(userNiName)==null){
inputStream=new ByteArrayInputStream("1".getBytes("UTF-8"));
}else{
inputStream=new ByteArrayInputStream("0".getBytes("UTF-8"));
}
return "ajax_succ";
}
@Override
public User getModel() {
return user;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
}

注意:这里我用的是ModelDriven的方式获取表单数据,而在使用ajax的时候,直接传了一个userNiName(昵称)过来,于是我在UserAction中加了一个私有字符串变量userNiName,并设置了set方法.结果死活传不过值来,传过来的是一个null,于是我将私有变量删掉,然后直接用user.getUserNiName()直接获取就得到了.切记.

UserService(省略).

User类(省略).

UserDao:

package com.wang.shop.user.dao;
import java.util.List;

import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import com.wang.shop.user.entity.User;
public class UserDao extends HibernateDaoSupport{
/**
* 通过用户昵称查询User
* @param userNiName
* @return
*/
public User findUserByName(String userNiName){
List<User> list = (List<User>) this.getHibernateTemplate().find("select u from User u where u.userNiName=?", userNiName);
if(list!=null&&list.size()>0){
System.out.println("list:"+list.get(0));
return list.get(0);
}
return null;
}
}

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="shop" namespace="/" extends="struts-default">
<!-- UserAction -->
<action name="user_*" class="userAction" method="{1}">
<result name="regist_succ">/WEB-INF/jspForUser/login.jsp</result>
<result type="stream" name="ajax_succ">
<param name="contentType">text/html</param>
<param name="inputStream">inputStream</param>
</result>
</action>
</package>
</struts>

注意在result标签中,type="stream".

最后顺带说一句,我在调试的时候习惯使用输出语句,但每次加一句输出语句都需要重启Tomcat,好烦.于是参考网上的方式,将Tmocat安装目录下,conf->server.xml中在<host>标签下添加了以下代码,就可以修改类(细微的修改)的时候,不需要重启服务器了:

<!--docBase就是你的项目工程所在的全路径,path就是写你的项目名,reloadable="true",可以自动重新加载修改过的class文件-->
<Context debug="0" docBase="D:\Tomcat 7.0\webapps\SSH_shop01" path="/SSH_shop01" reloadable="true" />

需要特别注意的是,当在Tomcat中卸载了该项目后,一定要回来将这个标签删除.

使用struts2+Ajax+jquery验证用户名是否已被注册的知识,小编就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
js实现在页面上弹出蒙板技巧简单实用
Apr 16 Javascript
Javascript字符串浏览器兼容问题分析
Dec 01 Javascript
JavaScript中的值类型详细介绍
Dec 29 Javascript
简述Jquery与DOM对象
Jul 10 Javascript
基于jquery实现简单的手风琴特效
Nov 24 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
Vue实现移动端拖拽交换位置
Jul 29 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 #Javascript
Node.js文件操作方法汇总
Mar 22 #Javascript
浅谈Sticky组件的改进实现
Mar 22 #Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 #Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 #Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
Mar 21 #Javascript
快速掌握Node.js事件驱动模型
Mar 21 #Javascript
You might like
一个图形显示IP的PHP程序代码
2007/10/19 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
python中bisect模块用法实例
2014/09/25 Python
Python中的推导式使用详解
2015/06/03 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python如何输出百分比
2020/07/31 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
2014年工程部工作总结
2014/11/25 职场文书
个人求职自荐信范文
2015/03/06 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python