您的位置:首页 > 其它

关于Ajax中处理回传参数的几种实现

2008-05-23 10:19 399 查看
我的试验主要包括4种:
1.回传一个普通的String字符串.
2.回传一个组织好的Javascript字符串.
3.回传一个Json对象.(需要引入json.jar)
4.回传一个XML对象.
基本实现如下:
其中测试页面为:




<%...@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




<%...request.setCharacterEncoding("UTF-8");%>


<html>


<head>


<title>测试Ajax页面</title>


</head>


<body>


<table width="100%" height="100%" >


<td align="center" valign="center" >


<form action="" method="post" onsubmit="">


<table border="3" >


<tr>


<td>


<input name="试验返回String" type="button" value="试验返回String" onclick="testAjaxForString();" style="width:140px;">


</td>


</tr>


<tr>


<td>


<input name="试验返回javascriptString" type="button" value="试验返回javascriptString" onclick="testAjaxForObject();" style="width:140px;">


</td>


</tr>


<tr>


<td>


<input name="试验返回json" type="button" value="试验返回json" onclick="testAjaxForJson();" style="width:140px;">


</td>


</tr>


<tr>


<td>


<input name="试验返回xml" type="button" value="试验返回xml" onclick="testAjaxForXml();" style="width:140px;">


</td>


</tr>


</table>


</form>


</td>


</table>


</body>


</html>






<script type="text/javascript">...


var xmlHttp ;




function createXmlHttpRequest()...{




if(window.ActiveXObject)...{


xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") ;




}else if(window.XMLHttpRequest)...{


xmlHttp = new XMLHttpRequest();


}


}




/**//*返回String*/




function testAjaxForString()...{


createXmlHttpRequest();


var url = "HelloWorld?";


var queryString = "name=songwei";


url += queryString ;


// xmlHttp.onreadystatechange = parseHello ;//如果是异步,既open中最后一个参数为true.则打开该选项.


xmlHttp.open("post",url,false);


xmlHttp.send(null);


alert(xmlHttp.responseText); //如果是字符串或者xml.


}






/**//*返回JsObject*/




function testAjaxForObject()...{


createXmlHttpRequest();


var url = "HelloWorldForObject?";


var queryString = "name=songwei";


url += queryString ;


// xmlHttp.onreadystatechange = parseHello ;


xmlHttp.open("post",url,false);


xmlHttp.send(null);


alert(xmlHttp.responseText);


var o = eval(xmlHttp.responseText);


alert("username="+o.username);


alert("password="+o.password);


var farray = o.friend ;


var fname ="";




for(var i=0;i<farray.length;i++)...{


fname += farray[i]+" ";


}


alert("friend list ="+fname);


}


//返回Json




function testAjaxForJson()...{


createXmlHttpRequest();


var url = "HelloWorldForJson?";


var queryString = "name=songwei";


url += queryString ;


xmlHttp.open("post",url,false);


xmlHttp.send(null);


alert(xmlHttp.responseText);


var o = eval("(" + xmlHttp.responseText + ")");


alert(o.userInfo.username);


alert(o.userInfo.password);


alert(o.userInfo.friends[0]);


alert(o.userInfo.friends[1]);


}




//返回XML




function testAjaxForXml()...{


createXmlHttpRequest();


var url = "HelloWorldForXML?";


var queryString = "name=songwei";


url += queryString ;


xmlHttp.open("post",url,false);


xmlHttp.send(null);


alert(xmlHttp.responseXML);


alert ("tagName: " + xmlHttp.responseXML.documentElement.tagName);


var xmlDoc = xmlHttp.responseXML ;


var xmlRoot=xmlDoc.documentElement;





var friendsItem=xmlRoot.getElementsByTagName("friends");


alert(friendsItem[0].firstChild.firstChild.data);


alert(friendsItem[0].firstChild.nextSibling.firstChild.data);


var usernameItem = xmlRoot.getElementsByTagName("username");


alert(usernameItem[0].firstChild.data);





}


</script>

对于各种回传方式的不同servlet实现:
1.普通字符串 ,HelloWorld.java(Servlet)




public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet ...{




public HelloWorld() ...{


super();


}




protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


doPost(request,response);


}




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


// TODO Auto-generated method stub


String name = request.getParameter("name");


String str = "Hello "+name ;


PrintWriter pw = response.getWriter();


pw.print(str);


pw.close();


}


}

2.Javascript字符串Servlet实现
HelloWorldForObject.java




public class HelloWorldForObject extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet ...{




public HelloWorldForObject() ...{


super();


}




protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


doPost(request,response);


}







protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


String name = request.getParameter("name");


User user = new User();


user.setUsername(name);


user.setPassword("abc");


List<String> friend = new ArrayList<String>();


friend.add("wangdong");


friend.add("zhaoyong");


user.setFriend(friend);


StringBuffer sb = new StringBuffer();


sb.append("var o = new Object();");


sb.append("o.username ='"+user.getUsername()+"' ;");


sb.append("o.password ='"+user.getPassword()+"' ;");


sb.append("o.friend = new Array(");


String tmp = "" ;




for(String s : user.getFriend())...{




if(tmp.trim().length()<1)...{


tmp += "'"+s+"'" ;




}else...{


tmp +="," ;


tmp += "'"+s+"'" ;


}


}


sb.append(tmp+") ;");


sb.append("o;");


PrintWriter pw = response.getWriter();


pw.print(sb.toString());


pw.close();


}


}

3.JSon对象实现
HelloWorldForJson.java




public class HelloWorldForJson extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet ...{




public HelloWorldForJson() ...{


super();


}




protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


doPost(request,response);


}




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


response.setCharacterEncoding("UTF-8");


response.setHeader("Cache-Control","no-cache");


request.setCharacterEncoding("UTF-8");


String result = new String();


String name = request.getParameter("name");




try...{


JSONObject jsonResult = new JSONObject();


jsonResult.put("username",name);


jsonResult.put("password","password");


JSONArray jsonFriends = new JSONArray();


jsonFriends.put("张三");


jsonFriends.put("李四");


jsonResult.put("friends",jsonFriends);


result = new JSONObject().put("userInfo", jsonResult).toString();




}catch(JSONException jex)...{


jex.printStackTrace();


}


response.getWriter().print(result);


response.getWriter().close();


}


}

4.XML对象实现
HelloWorldForXML.java




public class HelloWorldForXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet ...{




public HelloWorldForXML() ...{


super();


}




protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


doPost(request,response);


}




protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{


String name = request.getParameter("name");


Document doc = null ;


String docStr ="" ;




try...{


DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();


DocumentBuilder db = dbf.newDocumentBuilder();


doc = db.newDocument();


Element root = doc.createElement("userInfo");


doc.appendChild(root);


Element nameE = doc.createElement("username");


Text nameT = doc.createTextNode(name);


nameE.appendChild(nameT);


root.appendChild(nameE);





Element passE = doc.createElement("password");


Text passT = doc.createTextNode("password");


passE.appendChild(passT);


root.appendChild(passE);





Element friends = doc.createElement("friends");





Element friend1 = doc.createElement("friend");


Text f1T = doc.createTextNode("张三");


friend1.appendChild(f1T);


Element friend2 = doc.createElement("friend");


Text f2T = doc.createTextNode("李四");


friend2.appendChild(f2T);





friends.appendChild(friend1);


friends.appendChild(friend2);


root.appendChild(friends);





ByteArrayOutputStream bstream = null;




try ...{


bstream = new ByteArrayOutputStream();


Transformer xformer = TransformerFactory.newInstance()


.newTransformer();


Source source = new DOMSource(doc);


Result result = new StreamResult(bstream);


xformer.transform(source, result);




} catch (Exception e) ...{


e.printStackTrace();


}




try ...{


docStr = new String(bstream.toByteArray(), "UTF-8");




} catch (UnsupportedEncodingException e) ...{


e.printStackTrace();


docStr = new String(bstream.toByteArray());


}


System.out.println(docStr);







}catch(ParserConfigurationException ex)...{


ex.printStackTrace();


}


response.setContentType("text/xml;charset=UTF-8");


PrintWriter writer = response.getWriter();


writer.print(docStr);


writer.flush();


writer.close();


}

down!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: