使用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 相关文章推荐
基础的prototype.js常用函数及其用法
Mar 10 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
Feb 03 Javascript
js页面跳转的常用方法整理
Oct 18 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
May 17 Javascript
基于layui的table插件进行复选框联动功能的实现方法
Sep 19 Javascript
vue实现在线翻译功能
Sep 27 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
Jul 28 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 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查询ip所在地的方法
2014/12/05 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
javascript实现计算器功能
2020/03/30 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
班组长岗位职责
2014/03/03 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
2015年仓库工作总结
2015/04/09 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python