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

logic1221 2010-07-22 04:42:38
不太了解Ajax,呵呵!谢谢!
...全文
352 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
caomaomr007 2013-03-19
  • 打赏
  • 举报
回复
s478853630 2013-03-18
  • 打赏
  • 举报
回复
这个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可以做到,但是配置比较啰嗦
s478853630 2013-03-18
  • 打赏
  • 举报
回复
这段代码是apache包下一个片段,不需要配置,注解一下就可使用,js代码比JQuery要简洁的多,java代码比dwr还简洁,楼主部分试试
s478853630 2013-03-18
  • 打赏
  • 举报
回复
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("这个用户名可以使用,你的表单可以提交了");
	}
});

tianyashashou502 2013-03-18
  • 打赏
  • 举报
回复
引用 2 楼 cfd406635982 的回复:
用json js代码: JavaScript code ? 12345678910111213141516171819202122232425262728293031323334353637383940 var xmlHttp; var currentName; function createXMLHttpRequest() ……
这个玩意真心好,传统的AJAX,我一直都在用。尽管公司有DWR,但有时懒得去配XML,直接用这个了。
tianyashashou502 2012-04-08
  • 打赏
  • 举报
回复
坐等好心人来给个详细的讲解
cfd406635982 2010-07-23
  • 打赏
  • 举报
回复
http://code.google.com/p/jsonplugin/downloads/list
如果你光想实现用户验证的话 你可以简单点。。
直接用ajax就是了 自己上网上找点例子就是了
logic1221 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bailingzhl 的回复:]
呵呵 我挺懒得敲代码的 给你推荐两个技术 DWR或者JQuery 都可以实现的. 很简单.

自己在网上查一查就可以了.
[/Quote]什么插件包?
logic1221 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 logic1221 的回复:]
不太了解Ajax,呵呵!谢谢!
[/Quote]呵呵。。谢谢!
dickli1986 2010-07-23
  • 打赏
  • 举报
回复
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());
}
}
logic1221 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cfd406635982 的回复:]

http://code.google.com/p/jsonplugin/downloads/list
如果你光想实现用户验证的话 你可以简单点。。
直接用ajax就是了 自己上网上找点例子就是了
[/Quote]插件包是直接放在lib下面么?
logic1221 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cfd406635982 的回复:]

用json
js代码:
JScript code

var xmlHttp;
var currentName;

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Mic……
[/Quote]if(user.registered),register是定义在哪的?
logic1221 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bailingzhl 的回复:]
呵呵 我挺懒得敲代码的 给你推荐两个技术 DWR或者JQuery 都可以实现的. 很简单.

自己在网上查一查就可以了.
[/Quote] if(user.registered) 这个是怎么来的?registered是定义在action里面的么?
cfd406635982 2010-07-22
  • 打赏
  • 举报
回复

<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>
cfd406635982 2010-07-22
  • 打赏
  • 举报
回复
用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>

你需要去下载一个插件的包
bailingzhl 2010-07-22
  • 打赏
  • 举报
回复

呵呵 我挺懒得敲代码的 给你推荐两个技术 DWR或者JQuery 都可以实现的. 很简单.

自己在网上查一查就可以了.

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧