使用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跨域和ajax 跨域问题的实现思路
Sep 05 Javascript
JQuery 获取和设置Select选项的代码
Feb 07 Javascript
jquery实现的图片点击滚动效果
Apr 29 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
有关JavaScript中call()和apply() 的一些理解
May 20 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
JS实现根据文件字节数返回文件大小的方法
Aug 02 Javascript
详谈javascript精度问题与调整
Jul 08 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
浅谈vue中resetFields()使用注意事项
Aug 12 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(6) 面向对象
2010/02/16 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php内嵌函数用法实例
2015/03/20 PHP
PDO::query讲解
2019/01/29 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python+opencv实现动态物体识别
2018/01/09 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
python基础教程之while循环
2019/08/14 Python
python读取ini配置文件过程示范
2019/12/23 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
致接力运动员广播稿
2014/02/17 职场文书
手工社团活动方案
2014/02/17 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
党支部换届选举方案
2014/05/08 职场文书
党校学习个人总结
2015/02/15 职场文书
公司奖励通知
2015/04/21 职场文书