JSON实例(AJAX+STRUTS )
JSON实例(AJAX+STRUTS )
前段时间做项目用到了json,今天我抽时间写了一个struts+ajax+json的例子.
个人感觉ajax+json在很大程度上降低了网络和服务器的IO,是一个很不错的组合!
1:json的lib我用的是json-lib-2.1-jdk15.jar,它可以在
2:struts用的是1.2
3:用到了js第三方prototype.js,主要用它包装的ajax对象,大家也没必要用这个,可以直接在js里用XMLHttpRequest。
以下是例子中所用到的相关文件:
Java代码
/////////////////////////////////////// toolhxw.js??
/**?
@hxw? 20080602?
*/?
//回调函数? 简单回调函数???
function showesay(dataResponse)??
{??
var data = eval('(' + dataResponse.responseText + ')');??
var str='';??
str+='<ul>';??
str+='<li>'+data.param1;+'</li>';??
str+='<li>'+data.param2;+'</li>';??
str+='</ul>';??
document.getElementById("content").innerHTML=str;??
}??
//回调函数? 复杂回调函数??
function showcomplex(dataResponse)??
{??
var data = eval('(' + dataResponse.responseText + ')');??
var str='';??
for(var i=0;i<data.js.length;i++)??
{???
str+='<ul>';??
str+='<li>'+data.js[i].id+'</li>';??
str+='<li>'+data.js[i].age+'</li>';??
str+='<li>'+data.js[i].name+'</li>';??
str+='<li>'+data.js[i].address+'</li>';??
str+='</ul>';??
}??
document.getElementById("content").innerHTML=str;??
}??
//获取简单的json数据??
function getesay(){??
var url = 'test.do';??
? var pars = 'method=getEasy';??
? var ajax = new Ajax.Request(??
?? url,??
?? {method:'post',parameters:pars,onComplete:showesay}??
? );????
}??
//获取对象级复杂数据??
function getcomplex(){??
var url = 'test.do';??
? var pars = 'method=getComplex';??
? var ajax = new Ajax.Request(??
?? url,??
?? {method:'post',parameters:pars,onComplete:showcomplex}??
? );????
}??
?
///////////////////////////////////////struts-config.xml??
?
<?xml version="1.0" encoding="UTF-8"?>??
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">??
?
<struts-config>??
? <data-sources />??
? <form-beans />??
? <global-exceptions />??
? <global-forwards />??
? <action-mappings >??
??? <action path="/test" parameter="method" type="com.json.struts.action.TestAction">??
?? </action>??
??????
? </action-mappings>??
?
? <message-resources parameter="com.json.struts.ApplicationResources" />??
</struts-config>??
?
////////////////////////////////TestAction.java??
?
/*?
* Generated by MyEclipse Struts?
* Template path: templates/java/JavaClass.vtl?
*/?
package com.json.struts.action;??
?
import java.io.PrintWriter;??
?
import javax.servlet.http.HttpServletRequest;??
import javax.servlet.http.HttpServletResponse;??
import org.apache.struts.action.ActionForm;??
import org.apache.struts.action.ActionForward;??
import org.apache.struts.action.ActionMapping;??
import org.apache.struts.actions.DispatchAction;??
import net.sf.json.*;??
?
/**?
* @author hxw?
*?
*/?
public class TestAction extends DispatchAction {??
???
?
/**?
? * 获取简单组合数据?
? */?
public ActionForward getEasy(ActionMapping mapping, ActionForm form,??
?? HttpServletRequest request, HttpServletResponse response) {??
? response.setContentType("text/html; charset=GBK");??
? try?
? {??
?? PrintWriter out = response.getWriter();??
?? //这里的数据拼装一般是从数据库查询来的??
?? JSONObject jsonObject = new JSONObject();??
????? jsonObject.put("param1", "变量一");??
????? jsonObject.put("param2", "变量二");??
?? out.print(jsonObject.toString());??
?? out.flush();??
?? out.close();??
?? return null;??
? }catch(Exception e)??
? {??
?? e.printStackTrace