使用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中汉字显示乱码问题(已解决)
Dec 27 Javascript
定义select的边框颜色
Apr 28 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
js模拟滚动条(横向竖向)
Feb 22 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
JS前端加密算法示例
Dec 22 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
使用vue自定义指令开发表单验证插件validate.js
May 23 Javascript
bootstrap-paginator服务器端分页使用方法详解
Feb 13 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字符编码转换之gb2312转为utf8
2013/10/28 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
python如何停止递归
2020/09/09 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
政府信息公开实施方案
2014/05/09 职场文书
微笑服务标语
2014/06/24 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers