使用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 相关文章推荐
JQuery扩展插件Validate 1 基本使用方法并打包下载
Sep 05 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 Javascript
JavaScript之AOP编程实例
Jul 17 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
Dec 07 Javascript
jQuery表单元素选择器代码实例
Feb 06 Javascript
vue登录路由验证的实现
Dec 13 Javascript
Vue 中的compile操作方法
Feb 26 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
3分钟了解vue数据劫持的原理实现
May 01 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 Javascript
JavaScript 去重和重复次数统计
Mar 31 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
新浪SAE搭建PHP项目教程
2015/01/28 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
React优化子组件render的使用
2019/05/12 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
Python合并多个Excel数据的方法
2018/07/16 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
OpenCV 边缘检测
2019/07/10 Python
pygame实现非图片按钮效果
2019/10/29 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
材料成型专业个人求职信范文
2013/09/25 职场文书
培训自我鉴定
2014/01/31 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
端午节活动总结报告
2015/02/11 职场文书
政协委员个人总结
2015/03/03 职场文书
员工加薪申请报告
2015/05/15 职场文书
人民检察院起诉书
2015/05/20 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android