使用struts2+Ajax+jquery验证用户名是否已被注册

 更新时间:2016年03月22日 10:12:11   作者:醉眼识朦胧  
这篇文章主要介绍了使用struts2+Ajax+jquery验证用户名是否已被注册的相关资料,需要的朋友可以参考下

推荐阅读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验证用户名是否已被注册的知识,小编就给大家介绍这么多,希望对大家有所帮助!

相关文章

  • jQuery on()方法使用技巧详解

    jQuery on()方法使用技巧详解

    这篇文章主要介绍了jQuery on()方法使用技巧详解,本文讲解了trigger()绑定、多个事件绑定同一个函数、多个事件绑定不同函数、绑定自定义事件、传递数据到函数等技巧,需要的朋友可以参考下
    2015-04-04
  • jQuery中值得注意的trigger方法浅析

    jQuery中值得注意的trigger方法浅析

    在前端页面开发中,我们有时候希望能自定执行一些人性化操作,比如鼠标不用点击自动就能点击等操作,利用传统的js语言需要编写复杂的代码才能实现此功能,这时候我们使用jquery的trigger()方法就能轻松实现。本文就给大家详细介绍了关于jQuery中值得注意的trigger方法。
    2016-12-12
  • jquery中用函数来设置css样式

    jquery中用函数来设置css样式

    本文主要对jquery中用函数来设置css样式的方法进行详细介绍,具有很好的参考价值,下面就跟小编一起来看下吧
    2016-12-12
  • jQuery自定义组件(导入组件)

    jQuery自定义组件(导入组件)

    这篇文章主要介绍了jQuery自定义导入组件的相关资料,包括组件js,组件css及组件引用的内容,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • jquery实现动态操作select选中

    jquery实现动态操作select选中

    文章主要向大家介绍了jQuery 根据值或者文本选中select的方法和示例,非常实用的功能,需要的朋友可以参考下
    2015-02-02
  • jQuery-ui引入后Vs2008的无智能提示问题解决方法

    jQuery-ui引入后Vs2008的无智能提示问题解决方法

    引入jQuery-vsdoc文件后,jQuery库就能智能提示了,解决方法很简单在jQuery-ui的目录下再加入一个空的JS文件,命名jquery-ui-vsdoc.js
    2014-02-02
  • 再次分享18个非常棒的jQuery表格插件

    再次分享18个非常棒的jQuery表格插件

    我们一般都是用HTML表格来显示结构化数据,如今有很多的 jQuery 表格插件可以帮助我们更好的组织和控制表格数据,增强表格的功能和操作。今天要与大家分享的是18个非常优秀的 jQuery 表格插件,有用到朋友可以参考一下。
    2011-04-04
  • 根据邮箱的域名跳转到相应的登录页面的代码

    根据邮箱的域名跳转到相应的登录页面的代码

    其实主要是想记录一下这种对象的用法,喜欢的朋友可以参考下
    2012-02-02
  • jquery中ajax使用error调试错误的方法

    jquery中ajax使用error调试错误的方法

    这篇文章主要介绍了jquery中ajax使用error调试错误的方法,实例分析了Ajax的使用方法与error函数调试错误的技巧,需要的朋友可以参考下
    2015-02-02
  • jQuery 打造动态下滑菜单实现说明

    jQuery 打造动态下滑菜单实现说明

    本教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单。
    2010-04-04

最新评论