rel="File-List" href="file:///C:%5CDOCUME%7E1%5CtuxWang%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CtuxWang%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C04%5Cclip_filelist.xml">
服务器端代码:这里只测试了
Java(
我这会儿也只会
Java)
,
JSON
本身是支持很多语言的。
JSON很方便,而且JavaScript很容易解析这种数据格式。可以用JSON 替换xml 与服务器端进行数据交换,或者说传输数据!相比xml 来说,JSON就比较简单而且容易生成。
当然,最主要的就是如何发送请求与处理请求了,还有就是如何将各种数据类型转换成JSON格式串。上网查了些与服务器端交互的资料,在这里做一个总结吧-_-
肯定得得到一个 XMLHttpRequest 对象,顺便加上我们下载下来的 json.js- <script language=”text/javascript” src=”js/json.js”></script>
- <script language=”text/javascript”>
- var xmlHttp;
- function createXMLHttpRequest(){
- if (window.ActiveXObject){
- xmlHttpRequest =new ActiveXObject( " Microsoft.XMLHTTP " );
- }else if (window.XMLHttpRequest) {
- xmlHttpRequest = new XMLHttpRequest();
- }
- }
- function doPost(){ // 有一个发出请求的JavaScript 函数
- var stu = getStudent();
- var stuJsonString = JSON.stringify(stu); // Or stu.toJSONString();
- alert(stuJsonString);
- var requestUrl = "JsonTest?timeStamp=" + new Date().getTime(); // 加上timeStamp确保不会在第一次发出请求后
- // 缓存,每次被调用后都会重新创建和重发
- alert(requestUrl);
- createXMLHttpRequest();
- xmlHttpRequest.open("post" , requestUrl , true);
- xmlHttpRequest.onreadystatechange = handleStateChange;
- xmlHttpRequest.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
- xmlHttpRequest.send(stuJsonString);
- }
- function handleStateChange(){
- if(xmlHttpRequest.readyState == 4){
- if(xmlHttpRequest.status == 200){
- parseResult();
- }
- }
- }
- function parseResult(){
- var responsediv = document.getElementById("resultdiv");
- if(responsediv.hasChildNodes()){
- responsediv.removeChild(responsediv.childNodes[0]);
- }
- var responseText = document.createTextNode(xmlHttpRequest.responseText);
- responsediv.appendChild(responseText); // 就让简单显示下响应的内容
- }
- function Student(name,stuclass,age){
- this.name = name;
- this.stuclass = stuclass;
- this.age = age;
- }
- function getStudent(){
- return new Student("Xiao Wang", "Class One",23);
- }
- </script>
客户端的JavaScript脚本差不多就这么多了,然后页面中有一个显示结果的层:
- <div id=”resultdiv”></div>
以下是Servlet中doPost()方法的代码:
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- String jsonString = null;
- StringBuffer json = new StringBuffer();
- String line = null;
- try{
- BufferedReader reader = request.getReader();
- while((line = reader.readLine()) != null){
- json.append(line);
- }
- }catch(Exception e){
- System.out.println("Error reading JSON string : " + e.toString());
- }
- jsonString = json.toString();
- JSONObject jsonObject = null;
- try{
- jsonObject = new JSONObject(json);
- }catch (JSONException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- String responseText = jsonObject.getString();;
- response.setContentType("text/xml");
- response.getWriter().print(responseText);
- }