使用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 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
Feb 23 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 Javascript
swiper4实现移动端导航切换
Oct 16 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 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
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
php生成HTML文件的类方法
2019/10/11 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
关于jQuery object and DOM element
2013/04/15 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
浅谈python可视化包Bokeh
2018/02/07 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
戴尔美国官网:Dell
2016/08/31 全球购物
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
大韩航空官方网站:Korean Air
2017/10/25 全球购物
机关门卫的岗位职责
2014/04/29 职场文书
食品流通安全承诺书
2014/05/22 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
单位政审意见范文
2015/06/04 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书