使用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 相关文章推荐
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
js精度溢出解决方案
Dec 02 Javascript
JavaScript中创建类/对象的几种方法总结
Nov 29 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
js代码实现随机颜色的小方块
Jul 30 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
May 17 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
在vue项目中使用Nprogress.js进度条的方法
Jan 31 Javascript
Vue自定义组件的四种方式示例详解
Feb 28 Javascript
token 机制和实现方式
Dec 15 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
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
Python制作爬虫抓取美女图
2016/01/20 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python的垃圾回收机制详解
2019/08/28 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
平面设计专业求职信
2014/08/09 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL