使用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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
JavaScript中的集合及效率
Jan 08 Javascript
js Dialog 去掉右上角的X关闭功能
Apr 23 Javascript
js实现滑动触屏事件监听的方法
May 05 Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
js module大战
Apr 19 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
针对Vue路由history模式下Nginx后台配置操作
Oct 22 Javascript
javascript实现简单页面倒计时
Mar 02 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
css配合jquery美化 select
2013/11/29 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
个人小程序接入支付解决方案
2019/05/23 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
对python生成业务报表的实例详解
2019/02/03 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
python打印异常信息的两种实现方式
2019/12/24 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
销售员岗位职责范本
2014/02/03 职场文书
工作求职信
2014/07/04 职场文书
写字楼租赁意向书
2014/07/30 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
民主生活会意见
2015/06/05 职场文书
部门主管竞聘书
2015/09/15 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
Redis数据结构之链表与字典的使用
2021/05/11 Redis