当前位置:编程学习 > JAVA >>

struts2 ajax 验证用户名是否存在?能给个实例么?

不太了解Ajax,呵呵!谢谢! --------------------编程问答--------------------
     呵呵 我挺懒得敲代码的  给你推荐两个技术   DWR或者JQuery  都可以实现的. 很简单. 

  自己在网上查一查就可以了. --------------------编程问答-------------------- 用json
js代码:

var xmlHttp;
var currentName;
 
function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}

function checkUserName(field,url) {
var name = field.value;
if(name=="" || name.length<3) {
document.getElementById("nameMessage").innerHTML="用户名应该不小于3位";
return;
}else {
createXMLHttpRequest();
url = url+"?inputName="+name;
currentName = name;
xmlHttp.open("GET", url);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
}

function callback() {
 if (xmlHttp.readyState == 4) {
     if (xmlHttp.status == 200) {
      var user = eval('(' + xmlHttp.responseText + ')');
      if(user.registered) {
      document.getElementById("nameMessage").innerHTML ="<font color='red'>"+currentName+", 已经被注册 !</font>";
      }else {
      document.getElementById("nameMessage").innerHTML = "<font color='green'>"+currentName+", 可以注册 !</font>";
      }
     }
 }
}



action代码:

public String check() throws Exception {
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);       
String username = request.getParameter("inputName");
if(checkUserExit(username)) {
this.registered = true;
}
return "myJson";
}


xml中action的配置:

<package name="ajaxUser" extends="json-default">
<action name="register" class="com.test.user.RegisterAction">
<result name="input">/user/register.jsp</result>
<result name="success">/user/register_message.jsp</result>
<result name="myJson" type="json"></result>
</action>
</package>

你需要去下载一个插件的包 --------------------编程问答--------------------

<tr>
     <td class="label">用  户 名:</td>
     <td><s:textfield onblur="checkUserName(this,'/register!check.action')"  cssClass="inputStyle" name="user.name"/></td>
     <td width="150px;"><SPAN id="nameMessage"></SPAN><s:fielderror cssClass="filedErrorClass" fieldName="name"/></td>
     </tr>
--------------------编程问答--------------------
引用楼主 logic1221 的回复:
不太了解Ajax,呵呵!谢谢!
呵呵。。谢谢! --------------------编程问答--------------------
引用 1 楼 bailingzhl 的回复:
     呵呵 我挺懒得敲代码的  给你推荐两个技术   DWR或者JQuery  都可以实现的. 很简单. 

  自己在网上查一查就可以了.
什么插件包? --------------------编程问答-------------------- http://code.google.com/p/jsonplugin/downloads/list
如果你光想实现用户验证的话 你可以简单点。。
直接用ajax就是了 自己上网上找点例子就是了 --------------------编程问答--------------------
引用 1 楼 bailingzhl 的回复:
     呵呵 我挺懒得敲代码的  给你推荐两个技术   DWR或者JQuery  都可以实现的. 很简单. 

  自己在网上查一查就可以了.
  if(user.registered) 这个是怎么来的?registered是定义在action里面的么?
--------------------编程问答--------------------
引用 2 楼 cfd406635982 的回复:
用json
js代码:
JScript code

var xmlHttp;
        var currentName;
 
        function createXMLHttpRequest() {
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Mic……
if(user.registered),register是定义在哪的? --------------------编程问答--------------------
引用 6 楼 cfd406635982 的回复:
http://code.google.com/p/jsonplugin/downloads/list
如果你光想实现用户验证的话 你可以简单点。。
直接用ajax就是了 自己上网上找点例子就是了
插件包是直接放在lib下面么? --------------------编程问答-------------------- ajax:
		<script type="text/javascript">
function createRequest() {
var client = null;
try {
client = new XMLHttpRequest();
}
catch (e) {
}
if (client == null) {
var namePrefixes = ["Msxml3", "Msxml2", "Msxml", "Microsoft"];
for (var i = 0; i < namePrefixes.length; i++) {
var name = namePrefixes[i] + ".XMLHTTP";
try {
client = new ActiveXObject(name);
if (client != null) {
break;
}
}
catch (e) {
}
}
}
return client;
}
</script>
<script type="text/javascript">
var client=createRequest();
function validateip(ip){
var url="netmonitorobject.do?method=validateip";
url+="&ip="+ip;
client.open("GET",url,true);
client.onreadystatechange=showMessage;
client.send(null);
}
function showMessage(){
if(client.readyState==4){
var response=client.responseText;
if(response=="false"){
document.getElementById("message").style.display="";
alert("此IP地址已经在设备参数中设置!");
document.getElementById("sub").disabled=true;
}else{
document.getElementById("message").style.display="none";
document.getElementById("sub").disabled=false;
}
}
}
</script>

action:
	public void validateip(ActionMapping map, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
String ip = request.getParameter("ip").trim();

DbMonitorObject dbmonitorobject = new DbMonitorObject();

VO returnvo = dbmonitorobject.getMonitorObjectDetailByIP(ip);

if (returnvo == null) {
response.getWriter().write("");
response.getWriter().flush();
response.getWriter().close();
} else {
response.getWriter().write("false");
response.getWriter().flush();
response.getWriter().close();
}
} catch (Exception ex) {
// ex.printStackTrace();
try {
CommonUtil.debug(ex.toString(), ex);
} catch (Exception e1) {
}
request.setAttribute("successFlag", "0");
request.setAttribute("msg", "" + "系统错误!" + ex.toString());
}
}
--------------------编程问答-------------------- 坐等好心人来给个详细的讲解 --------------------编程问答--------------------
引用 2 楼 cfd406635982 的回复:
用json
js代码:


JavaScript code
?



12345678910111213141516171819202122232425262728293031323334353637383940

var xmlHttp;         var currentName;            function createXMLHttpRequest() ……

这个玩意真心好,传统的AJAX,我一直都在用。尽管公司有DWR,但有时懒得去配XML,直接用这个了。 --------------------编程问答-------------------- java代码:

package com.number.control.ajax;

import org.apache.commons.mvc.annotation.AjaxBean;
import org.apache.commons.mvc.annotation.AjaxMethod;
import org.apache.commons.mvc.web.BaseAjax;
import org.apache.log4j.Logger;
import com.number.entity.User;
import com.number.model.UserModel;

/**
 * 用户的ajax
 * @version 1.0
 */
@AjaxBean(name = "userAjax")  // 这个名称可以在页面生成javascript对象
public class UserAjax extends BaseAjax {

private static final Logger log = Logger.getLogger(UserAjax.class);
private UserModel model = new UserModel();

/**
 * 验证用户名称是否存在, 在页面引入两个js文件即可使用:
 * <script type="text/javascript" src="/你的工程名称/org/apache/commons/mvc/res/js/public.js.你配置的后缀"></script>
 * <script type="text/javascript" src="/你的工程名称/commons/mvc/ajax/userAjax.js.你配置的后缀"></script>
 * 页面就这样写:userAjax.isNameExist("admin", function(result) {alert(result);});
 * @return Boolean
 */
@AjaxMethod
public Boolean isNameExist(String userName) {
return null != model.findByName(userName);
}

}

js代码:
userAjax.isNameExist("admin", function(result) {
if (result) {
alert("这个用户名已经被注册了");
} else {
alert("这个用户名可以使用,你的表单可以提交了");
}
});

--------------------编程问答-------------------- 这段代码是apache包下一个片段,不需要配置,注解一下就可使用,js代码比JQuery要简洁的多,java代码比dwr还简洁,楼主部分试试 --------------------编程问答-------------------- 这个ajax蛮强大的,如果后台返回的是List,Map,数组类型,前台js就会自动接收到一个数组对象,比如:
java代码:
@AjaxMethod
public List<User> findAll() {
return model.findAll();
}

js代码:
userAjax.findAll(function(result) {
for (var i = 0; i < result.length; i++) {
alert(result[i].userName);
}
});


如果后台返回的是自定义实体类,前台js就会自动接收到一个对象,比如:
java代码:
@AjaxMethod
public User findById(Long id) {
return model.findById(id);
}
js代码:
userAjax.findById(function(result) {
alert(result.userName);
});


这些功能,好像JQuery是做不到的,dwr可以做到,但是配置比较啰嗦 --------------------编程问答--------------------
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,