使用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 相关文章推荐
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
Apr 16 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
JavaScript中的this关键字使用详解
Aug 14 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
微信小程序实现展示评分结果功能
Feb 15 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
vue-router项目实战总结篇
2018/02/11 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
python中使用print输出中文的方法
2018/07/16 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
python3实现表白神器
2019/04/09 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
母亲七十大寿答谢词
2014/01/18 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis