Ajax请求Servlet返回文本 json html和XML数据并解析xml及responseText和responseXML的区别

使用ajax请求时候:

响应的数据类型由ajax设置的接受数据方式决定:

responseText决定响应的数据类型是文本;

responseXML决定响应的数据类型xml文档。当返回xml文档时候Servlet一定要设置response.setContentType("text/xml;charset=utf-8");根据是否需要缓存,可以设置response.setHeader("Cache-control", "no-cache");



响应数据的格式由Servlet设置ContentType决定:

text/xml   xml

text/html  html

text/plain  文本

application/json  json


下面是jsp--servlet  返回文本、xml文档、json、html的代码:


index.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. <script type="text/javascript">  
  9.   
  10.     function getXMLHttpRequest() {  
  11.         var xmlReq;  
  12.         if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari  
  13.             xmlReq = new XMLHttpRequest();  
  14.         } else {// code for IE6, IE5  
  15.             xmlReq = new ActiveXObject("Microsoft.XMLHTTP");  
  16.         }  
  17.         return xmlReq;  
  18.     }  
  19.       
  20.     //返回文本数据测试  
  21.     function ajaxText() {  
  22.         var oReq = getXMLHttpRequest();  
  23.         oReq.open("POST", "TextServlet", true);  
  24.         oReq.setRequestHeader("Content-type",  
  25.                 "application/x-www-form-urlencoded"); //提交表单必须  
  26.         oReq.send("name=我是文本&pwd=123");  
  27.         oReq.onreadystatechange = function() {  
  28.             if (oReq.readyState == 4 && oReq.status == 200) {                 
  29.                 document.getElementById("myDiv").innerHTML = oReq.responseText; //responseText响应类型是文本  
  30.             }  
  31.         }  
  32.     }  
  33.       
  34.     //返回XML文档测试  
  35.     function ajaxXML() {  
  36.         var oReq = getXMLHttpRequest();  
  37.         oReq.open("POST", "HanderServlet", true);  
  38.         oReq.setRequestHeader("Content-type",  
  39.                 "application/x-www-form-urlencoded"); //提交表单必须  
  40.         oReq.send("name=我是xml&pwd=111");  
  41.         oReq.onreadystatechange = function() {  
  42.             if (oReq.readyState == 4 && oReq.status == 200) {  
  43.                 var xmlObj=oReq.responseXML; //responseXML响应类型是XML文档  
  44.                   
  45.                 var names=xmlObj.documentElement.getElementsByTagName("name");  
  46.                 var name=names[0].firstChild.nodeValue;  
  47.                   
  48.                 var pwds=xmlObj.documentElement.getElementsByTagName("pwd");  
  49.                 var pwd=pwds[0].firstChild.nodeValue;  
  50.                   
  51.                 document.getElementById("myDiv").innerHTML=name+","+pwd;  
  52.             }  
  53.         }  
  54.     }  
  55.   
  56.     //返回json文档测试  
  57.     function ajaxJSON() {  
  58.         var oReq = getXMLHttpRequest();  
  59.         oReq.open("POST", "JsonServlet", true);  
  60.         oReq.setRequestHeader("Content-type",  
  61.                 "application/x-www-form-urlencoded"); //提交表单必须  
  62.         oReq.send("name=我是json&pwd=111");  
  63.         oReq.onreadystatechange = function() {  
  64.             if (oReq.readyState == 4 && oReq.status == 200) {  
  65.                 var resObj=oReq.responseText; //json字符串用文本形式接收            
  66.                 var jsonObj1=eval('('+resObj+')');        
  67.                 var name1=jsonObj1.name;  
  68.                 var pwd1=jsonObj1.pwd;                
  69.                 document.getElementById("myDiv").innerHTML=name1+","+pwd1;  
  70.             }  
  71.         }  
  72.     }  
  73.       
  74.     //返回html  
  75.     function ajaxHTML() {  
  76.         var oReq = getXMLHttpRequest();  
  77.         oReq.open("POST", "HtmlServlet", true);  
  78.         oReq.setRequestHeader("Content-type",  
  79.                 "application/x-www-form-urlencoded"); //提交表单必须  
  80.         oReq.send("name=我是html&pwd=111");  
  81.         oReq.onreadystatechange = function() {  
  82.             if (oReq.readyState == 4 && oReq.status == 200) {  
  83.                 var resObj=oReq.responseText; //html用文本形式接收           
  84.                               
  85.                 document.getElementById("myDiv").innerHTML=resObj;  
  86.             }  
  87.         }  
  88.     }  
  89. </script>  
  90. </head>  
  91. <body>  
  92.   
  93. <button onclick="ajaxText()">ajax请求文本</button>  
  94. <button onclick="ajaxXML()">ajax请求XML文档</button>  
  95. <button onclick="ajaxJSON()">ajax请求json字符串</button>  
  96. <button onclick="ajaxHTML()">ajax请求html</button>  
  97. <div id="myDiv"></div>  
  98. </body>  
  99. </html>  



返回文本的Servlet:

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.ajax.test;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11.   
  12. public class TextServlet extends HttpServlet {    
  13.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  14.         doPost(request, response);  
  15.     }  
  16.   
  17.       
  18.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  19.         System.out.println("in text");  
  20.         request.setCharacterEncoding("utf-8");  
  21.         String name=request.getParameter("name");  
  22.         String pwd=request.getParameter("pwd");  
  23.         System.out.println("name:"+name+",pwd:"+pwd);         
  24.           
  25.         //返回文本数据  
  26.         response.setContentType("text/plain;charset=utf-8");  
  27.         ServletOutputStream outputStream = response.getOutputStream();  
  28.         outputStream.write(name.getBytes("utf-8"));  
  29.         outputStream.write(pwd.getBytes("utf-8"));  
  30.         outputStream.flush();  
  31.         outputStream.close();  
  32.     }  
  33.   
  34. }  



返回xml文档的Servlet

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.ajax.test;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11.   
  12. public class HanderServlet extends HttpServlet {  
  13.       
  14.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  15.         doPost(request, response);  
  16.     }  
  17.   
  18.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  19.         System.out.println("in xml");  
  20.         request.setCharacterEncoding("utf-8");  
  21.         String name=request.getParameter("name");  
  22.         String pwd=request.getParameter("pwd");  
  23.         System.out.println("name:"+name+",pwd:"+pwd);  
  24.   
  25.           
  26.         //返回xml文档  
  27.         response.setContentType("text/xml;charset=utf-8");  
  28.         response.setHeader("Cache-control""no-cache");  
  29.         ServletOutputStream outputStream = response.getOutputStream();  
  30.         StringBuffer sb=new StringBuffer();  
  31.         sb.append("<?xml version='1.0' encoding='utf-8'?>");  
  32.         sb.append("<user><name>"+name+"</name><pwd>"+pwd+"</pwd></user>");  
  33.         outputStream.write(sb.toString().getBytes("utf-8"));  
  34.         outputStream.flush();  
  35.         outputStream.close();             
  36.     }  
  37.   
  38. }  



返回json字符串的Servlet

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.ajax.test;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class JsonServlet extends HttpServlet {  
  12.   
  13.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  14.         doPost(request, response);  
  15.     }  
  16.   
  17.       
  18.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  19.         System.out.println("in json");  
  20.         request.setCharacterEncoding("utf-8");  
  21.         String name=request.getParameter("name");  
  22.         String pwd=request.getParameter("pwd");  
  23.         System.out.println("{'name':"+name+",'pwd':"+pwd+"}");        
  24.           
  25.         //返回json字符串数据  
  26.         response.setContentType("application/json;charset=utf-8");  
  27.         ServletOutputStream outputStream = response.getOutputStream();  
  28.         String res="{'name':'"+name+"','pwd':'"+pwd+"'}"//json字符串要写成"{'name':'tom'}"的形式,里面的key和value也要加''写成字符串的形式  
  29.         outputStream.write(res.getBytes("utf-8"));    
  30.         outputStream.flush();  
  31.         outputStream.close();  
  32.     }  
  33.   
  34. }  




返回html的Servlet

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.ajax.test;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class HtmlServlet extends HttpServlet {  
  12.   
  13.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  14.         doPost(request, response);  
  15.     }  
  16.   
  17.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  18.         System.out.println("in html");  
  19.         request.setCharacterEncoding("utf-8");  
  20.         String name=request.getParameter("name");  
  21.         String pwd=request.getParameter("pwd");  
  22.         System.out.println("name:"+name+",pwd:"+pwd);  
  23.   
  24.           
  25.         //返回html文档  
  26.         response.setContentType("text/html;charset=utf-8");  
  27.         response.setHeader("Cache-control""no-cache");  
  28.         ServletOutputStream outputStream = response.getOutputStream();  
  29.         String res="<font size='2' color='blue'>"+name+pwd+"</font>";  
  30.         outputStream.write(res.getBytes("utf-8"));  
  31.         outputStream.flush();  
  32.         outputStream.close();             
  33.     }  
  34.   
  35. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值