http://takeme.iteye.com/blog/1691725

在使用XMlhttpRequest对象发送请求和响应之前,必须首先使用javaScript对象创建一个XMLHttpRquest对象。

Js代码  
  1. var xmlhttp;
  2. function getXMLHttpRequest(){
  3. if(window.ActiveXObject){
  4. xmlhttp:new ActiveXObject("Microsoft.XMLHTTP");
  5. }
  6. else if(window.XMLHTTPrequest){
  7. xmlHttp=new XMLHttpRequest();
  8. }
  9. }

XMLHttpRequest 对象的方法

Java代码  
  1. abort() 该方法哟用于取消当前的请求。
  2. getAllREsponseHeaders(); 用于获取响应的所有HTTP头部。
  3. getResponseHeaders().从响应信息中获取指定的HTTp头,其使用格式如下:String getResponseHeader(String header);
  4. open():用于创建一个新的Http请求,并指定次请求的方法,URL以及验证消息。其使用格式如下:
  5. void open(String method,String url,boolean asynch,String userName ,String password)
  6. send():用于发送请求到HTTP服务器并接受回应,其格式如下:void send(String content)
  7. setRequestHeader() 用于单独指定求的某个http头,其使用格式如下 void setRequestHeader(String header,String value);
  8. onreadyStateChange:该树形用于指定readState树形改变时的事件处理函数,当服务器返回数据到客户端时,需要相印的JavaScript函数去处理这些数据。
  9. responseBody:将响应信息正文以 u;nsigned byte 数组形式返回。
  10. responseText:将响应系响应作为字符串返回
  11. responseXML:将响应信息作为XML Document对象返回。
  12. readState:返回当前请求的状态,有5个可取值,分别为
  13. 0:为初始化,即对象已建立,但是尚未初始化,(尚未调用open())
  14. 1:表示正在加载,此时对象已建立,尚未调用 send()
  15. 2:表示已加载,即已骠勇send()方法,但是当前状态及Http头未知
  16. 3:表示交互中,此时已接受部分数据,因为响应及Http头不全,这时通过responseBody和responseText:获取部分参数会出现错误。
  17. 4:表示完成,即数据接受完毕,此时可以通过responseBody和responseText获取完整的回应数据。
  18. status:返回当前请求的HTTP状态码:例如 200对应OK 404:对应Not Found,该属性仅在readyState属性值为 3或者 4有效。
  19. statusText:返回当前请求的响应行状态,例如Ok NotFound。该属性仅在readyState属性值为 3 或者 4时有效。

--------XMLHttpRequest--------------- 
示例1: 
创建javaweb工程 
index.jsp

Html代码  
  1. </head>
  2. <%
  3. Date now=new Date();
  4. %>
  5. <body>
  6. <center>
  7. <h3>当前时间为:<%=now %></h3>
  8. <hr/>
  9. 点击歌名看歌词
  10. <input type="button" value="浪子心声" onclick="getLyrice('lzxs')"/>
  11. <input type="button" value="暗里着迷" onclick="getLyrice('alzm')"/>
  12. <br/><br/>
  13. <span id="showLyrice">
  14. 暂时还没有选择歌曲!
  15. </span>
  16. </center>
  17. <script type="text/javascript">
  18. var xmlhttp;
  19. function getXMLHttpRequest(){
  20. if(window.XMLHttpRequest){  //注意这里 XMLHttpRequest  不是大写的 "HTTP"
  21. //针对FireFox,Mozilla,Opera,Safari,IE7,IE8
  22. xmlhttp=new XMLHttpRequest();
  23. //针对某些特定的版本的mozilla浏览器的BUG进行修正
  24. if(xmlhttp.overrideMimeType){
  25. xmlhttp.overrideMimeType("text/html");
  26. }
  27. }else if(window.ActiveXObject){
  28. //针对 IE6 IE5.5 IE5
  29. //两个可以创建XMLHTTPRequest对象额控件名称保存在js数据中
  30. var activexName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  31. for(var i=0;i<activexName.length;i++){
  32. try{
  33. //取出控件名称进行创建,如果创建成功终止循环
  34. //如果创建失败,抛出异常,然后可以继续循环,继续尝试
  35. xmlhttp=new ActiveXObject(activexName[i]);
  36. break;
  37. }catch(e){
  38. }
  39. }
  40. }
  41. //确认XMLHTTPRequest对象创建成功
  42. if(!xmlhttp){
  43. alert("XMLHttpRequest对象创建失败!");
  44. return;
  45. }
  46. }
  47. function getLyrice(songName){
  48. getXMLHttpRequest();
  49. xmlhttp.open("GET","data.jsp?songName="+songName,true);
  50. xmlhttp.onreadystatechange=returnLyrice;
  51. xmlhttp.send(null);
  52. }
  53. //回调函数
  54. function returnLyrice(){
  55. if(xmlhttp.readyState==4){
  56. var lyrics=xmlhttp.responseText;
  57. document.getElementById("showLyrice").innerHTML=lyrics;
  58. }
  59. }
  60. </script>
  61. </body>

data.jsp

Html代码  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. String songName=request.getParameter("songName");
  6. if("lzxs".equals(songName)){
  7. out.println("<br/>");
  8. out.println("<font size='5' color='red'>浪子心声</font><br/>");
  9. out.println("<font size='2'>刘德华</font><br/>");
  10. }
  11. else if("alzm".equals(songName)){
  12. out.println("<br/>");
  13. out.println("<font size='5' color='red'>暗里着迷</font><br/>");
  14. out.println("<font size='2'>刘德华</font><br/>");
  15. }
  16. %>

--------------XML 数据载体--------------  
menu.jsp

Html代码  
  1. <body>
  2. <h3>级联菜单</h3>
  3. 选择省份:
  4. <select name="provinces" id="provincesID" onchange="getCities()">
  5. <option value="">=选择身份=</option>
  6. <option value="zj">浙江</option>
  7. <option value="gd">广东</option>
  8. </select>
  9. 选择城市:
  10. <select name="cities" id="citiesID">
  11. <option value="">=选择城市=</option>
  12. </select>
  13. <script type="text/javascript">
  14. var xmlhttp;
  15. function getCities(){
  16. var province=document.getElementById("provincesID").value;
  17. getXMLHttpRequest();
  18. xmlhttp.open("GET","${pageContext.request.contextPath}/servlet/XMLServlet?province="+province,true);
  19. xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  20. xmlhttp.onreadystatechange=returnCities;
  21. xmlhttp.send(null);
  22. }
  23. function returnCities(){
  24. if(xmlhttp.readyState==4){ //表示请求和响应的处理结束了
  25. if(xmlhttp.status==200){ //表示处理后的状态
  26. var returnXML=xmlhttp.responseXML;
  27. var cs=document.getElementById("citiesID");
  28. alert(returnXML);
  29. var city=returnXML.getElementsByTagName("city");
  30. while(cs.childNodes.length>2){
  31. cs.removeChild(cs.childNodes[cs.childNodes.length-1]);
  32. }
  33. for(var i=0;i<city.length;i++){
  34. var option=document.createElement("option");
  35. option.innerText=city[i].firstChild.data;
  36. cs.appendChild(option);
  37. }
  38. }
  39. }
  40. }
  41. function getXMLHttpRequest(){
  42. if(window.XMLHttpRequest){  //注意这里 XMLHttpRequest  不是大写的 "HTTP"
  43. //针对FireFox,Mozilla,Opera,Safari,IE7,IE8
  44. xmlhttp=new XMLHttpRequest();
  45. //针对某些特定的版本的mozilla浏览器的BUG进行修正
  46. if(xmlhttp.overrideMimeType){
  47. //如果返回的是xml数据 需要将 text/html --> text/xml
  48. xmlhttp.overrideMimeType("text/xml");
  49. }
  50. }else if(window.ActiveXObject){
  51. //针对 IE6 IE5.5 IE5
  52. //两个可以创建XMLHTTPRequest对象额控件名称保存在js数据中
  53. var activexName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  54. for(var i=0;i<activexName.length;i++){
  55. try{
  56. //取出控件名称进行创建,如果创建成功终止循环
  57. //如果创建失败,抛出异常,然后可以继续循环,继续尝试
  58. xmlhttp=new ActiveXObject(activexName[i]);
  59. break;
  60. }catch(e){
  61. }
  62. }
  63. }
  64. //确认XMLHTTPRequest对象创建成功
  65. if(!xmlhttp){
  66. alert("XMLHttpRequest对象创建失败!");
  67. return;
  68. }
  69. }
  70. </script>
  71. </body>

xmlServlet.java

Java代码  
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. public class XMLServlet extends HttpServlet {
  8. public void doGet(HttpServletRequest request, HttpServletResponse response)
  9. throws ServletException, IOException {
  10. doPost(request, response);
  11. }
  12. public void doPost(HttpServletRequest request, HttpServletResponse response)
  13. throws ServletException, IOException {
  14. response.setContentType("application/xml;charset=utf-8");
  15. //response.setContentType("text/xml;charset=utf-8");
  16. PrintWriter out = response.getWriter();
  17. String province=request.getParameter("province");
  18. System.out.println("param:"+province);
  19. StringBuilder sb=new StringBuilder();
  20. if("zj".equals(province)){
  21. sb.append("<?xml version='1.0' encoding='UTF-8' ?>");
  22. sb.append("<cities>");
  23. sb.append("<city>杭州</city>");
  24. sb.append("<city>宁波</city>");
  25. sb.append("<city>温州</city>");
  26. sb.append("<city>天台</city>");
  27. sb.append("</cities>");
  28. }
  29. else if("gd".equals(province)){
  30. sb.append("<?xml version='1.0' encoding='UTF-8' ?>");
  31. sb.append("<cities>");
  32. sb.append("<city>广州</city>");
  33. sb.append("<city>深圳</city>");
  34. sb.append("<city>珠海</city>");
  35. sb.append("<city>东莞</city>");
  36. sb.append("</cities>");
  37. }
  38. System.out.println(sb.toString());
  39. out.print(sb.toString());
  40. }
  41. }

--------------Json 数据载体--------------

Java代码  
  1. json:(javaScript Object Notation) 是一种轻量级的数据交换格式,它是一种特定额字符串形式来表示的javaScript对象,如果将具有这样一种形式的字符串赋值给一个javaScript变量,该变量随后将引用一个通过指定给该变量的字符串构建对象。
  2. JSON是独立于语言的,他主要有如下两种数据结构
  3. 1.名/值对的集合
  4. 在不同的语言中,它白实现为对象(object) 记录(record) 结构(struct) 字典(dictionary) 哈希表(hashCode) 有键列表(key List) 或者 关联数组(associative array )
  5. 2.值的有序列表
  6. 在大部分语言中,它被实现为数组(array)
Java代码  
  1. 对象:
  2. 对象是一个无序的名/值对集合。一个对象在以左花括号({) 开始,以右花括号(})结束.每个名称和值之间以(;)分隔,名/值对之间使用英文逗号(,)
  3. 例如:
  4. <script type="text/javascript">
  5. var user={"userName":"xiaoqi","sex":"男","age":"24"}
  6. </script>
  7. 数组
  8. 数组是值(value)的有序集合,一个数组以坐括号([)开始,以右括号结束(]),值之间使用英文(,)逗号分隔
  9. 例如:
  10. <script type="text/javascript">
  11. var userName=["xiaoqi","xiaoxue","candy"];
  12. </script>
  13. 值可以是双引号括起来的字符串(String) 数组(number) true false null 对象(object) 数组 (array) 这些结构可以嵌套
  14. 字符串
  15. 字符串(String) 是有双引号阔气阿里的认识数量Unicode字符的集合,使用反斜杠(\)转义,一个字符串即一个单独的字符串
  16. 数值
  17. 数值(number)与java中的数值非常相似,但不区分整型值和浮点型.也不支持8进制和16进制格式.
  18. 与xml比较
  19. 1:JSON是类型化的,值可以是String number array boolean object null 而xml 是无类型的.所有的值是字符串.
  20. 2.使用JSON 不需要再解析数据.
  21. 例如:服务器端的响应可以是一下的JSON串:
  22. {name:"xiaoqi",age:"24"}
  23. 使用eval()函数可以将这个JSON串换为javaScript 对象,如下
  24. var user=eva('('+xmlhttp.responseText+')');

示例:

Html代码  
  1. <body>
  2. <h3>JSON的使用</h3>
  3. <input type="button" value="获取JSON数据" onclick="getInfo()"/>
  4. <div id="showInfo"></div>
  5. <script type="text/javascript">
  6. var xmlhttp;
  7. function getInfo(){
  8. getXMLHttpRequest();
  9. xmlhttp.open("GET","jslib/user.txt",true);
  10. xmlhttp.onreadystatechange=returnInfo;
  11. xmlhttp.send(null);
  12. }
  13. function returnInfo(){
  14. if(xmlhttp.readyState=4){
  15. if(xmlhttp.status==200){
  16. var info=xmlhttp.responseText;
  17. var func=new Function("return"+info);
  18. var json=func();
  19. var value="姓名:<font color='red'>"+json.name+"</font>&nbsp;&nbsp;";
  20. value+="年龄:<font color='red'>"+json.age+"</font>";
  21. document.getElementById("showInfo").innerHTML=value;
  22. }
  23. }
  24. }
  25. function getXMLHttpRequest(){
  26. if(window.XMLHttpRequest){  //注意这里 XMLHttpRequest  不是大写的 "HTTP"
  27. //针对FireFox,Mozilla,Opera,Safari,IE7,IE8
  28. xmlhttp=new XMLHttpRequest();
  29. //针对某些特定的版本的mozilla浏览器的BUG进行修正
  30. if(xmlhttp.overrideMimeType){
  31. //如果返回的是xml数据 需要将 text/html --> text/xml
  32. xmlhttp.overrideMimeType("text/html");
  33. }
  34. }else if(window.ActiveXObject){
  35. //针对 IE6 IE5.5 IE5
  36. //两个可以创建XMLHTTPRequest对象额控件名称保存在js数据中
  37. var activexName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
  38. for(var i=0;i<activexName.length;i++){
  39. try{
  40. //取出控件名称进行创建,如果创建成功终止循环
  41. //如果创建失败,抛出异常,然后可以继续循环,继续尝试
  42. xmlhttp=new ActiveXObject(activexName[i]);
  43. break;
  44. }catch(e){
  45. }
  46. }
  47. }
  48. //确认XMLHTTPRequest对象创建成功
  49. if(!xmlhttp){
  50. alert("XMLHttpRequest对象创建失败!");
  51. return;
  52. }
  53. }
  54. </script>
  55. </body>

jslib/user.txt

Java代码  
  1. {name:"xiaoqi",age:"24"}

--------------------dojo的使用-------------------- 
1.在webroot文件夹下导入dojo所需要的文件 
dojo  dojox  dijit

示例:dojo.jsp

Html代码  
  1. <body>
  2. <div id="showDate"></div><br/>
  3. <input type="button" value="获取服务器当前的时间" onclick="getDate()"/>
  4. <script type="text/javascript" src="dojo/dojo/dojo.js"></script>
  5. <script type="text/javascript">
  6. function getDate(){
  7. dojo.xhrGet({
  8. url:"getDate.jsp",
  9. load:returnDate,
  10. error:dealError
  11. });
  12. }
  13. function returnDate(data,ioArgs){
  14. document.getElementById("showDate").innerHTML=data;
  15. }
  16. function dealError(data,ioArgs){
  17. document.getElementById("showDate").innerHTML="服务器访问失败!";
  18. }
  19. </script>
  20. </body>

getDate.jsp

Html代码  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. out.println("服务器当前日期时间为:<font color='red'>"+new Date()+"</font>");
  4. %>

--------------Struts2 使用 json------------------- 
1.添加 struts2-json-plugin-2.3.4.jar 
test.action

Java代码  
  1. package com.sh.action;
  2. import org.apache.struts2.json.annotations.JSON;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. @SuppressWarnings("serial")
  5. public class Test extends ActionSupport {
  6. private int studentId=1001;
  7. private String studentName="小霸王";
  8. private String studentSex="男";
  9. private int studentAge=21;
  10. private String studentClass="04PC";
  11. private String studentAddress="北京市朝阳区";
  12. //  注释后 返回的json字符串中将没有这个 键值对
  13. //  public int getStudentId() {
  14. //      return studentId;
  15. //  }
  16. public void setStudentId(int studentId) {
  17. this.studentId = studentId;
  18. }
  19. public String getStudentName() {
  20. return studentName;
  21. }
  22. public void setStudentName(String studentName) {
  23. this.studentName = studentName;
  24. }
  25. public String getStudentSex() {
  26. return studentSex;
  27. }
  28. public void setStudentSex(String studentSex) {
  29. this.studentSex = studentSex;
  30. }
  31. //添加JSON注解  不序列化
  32. @JSON(serialize=false)
  33. public int getStudentAge() {
  34. return studentAge;
  35. }
  36. public void setStudentAge(int studentAge) {
  37. this.studentAge = studentAge;
  38. }
  39. public String getStudentClass() {
  40. return studentClass;
  41. }
  42. public void setStudentClass(String studentClass) {
  43. this.studentClass = studentClass;
  44. }
  45. public String getStudentAddress() {
  46. return studentAddress;
  47. }
  48. public void setStudentAddress(String studentAddress) {
  49. this.studentAddress = studentAddress;
  50. }
  51. @Override
  52. public String execute() throws Exception {
  53. // TODO Auto-generated method stub
  54. return SUCCESS;
  55. }
  56. }

struts.xml

Xml代码  
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <constant name="struts.i18n.encoding" value="utf-8"/>
  7. <package name="default" extends="json-default">
  8. <action name="test" class="com.sh.action.Test">
  9. <result type="json">
  10. <param name="excludeProperties">studentAddress</param>
  11. </result>
  12. </action>
  13. </package>
  14. </struts>

后面的theme="ajax" 由于 struts-dojo中少了模版文件 写的例子都运行不了 所以就不发了

----------------------Struts2中 采用ajax输入校验----------- 
Struts2中的AJax输入校验使用的是DWR矿框架,下面举例介绍在Struts2中使用DWR框架进行AJax输入校验

Java代码  
  1. 1.加载DWR文件,使用DWR款家需要在web应用中加载DWRjar文件的jwr.jar 该文件可以通过http://directwebremoting.org/dwr/download 进行下载,下载后将dwr复制到web应用的web-inf/lib目录中
  2. .配置DWR
  3. 创建一个WEB应用,然后配置好Struts2的开发环境,并添加dwr.jar 然后配置dwr,需要在web.xml文件中配置DWR核心Servlet

XMLhttpRequest 请求 XML,JSON ,POJO 数据相关推荐

  1. Ajax解析laravelJSON,3分钟短文:Laravel请求体内JSON格式数据的处理办法

    原标题:3分钟短文:Laravel请求体内JSON格式数据的处理办法 引言 前几篇文章我们讲了表单数据的接收,验证等功能.也说到了传送的数组如何处理, 今天我们说一下如果传送的数据是JSON格式,其处 ...

  2. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

  3. PHP如何通过Http Post请求发送Json对象数据?

    因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象. Http中传输对象,最好的表现形式莫过于JSON字符串了, ...

  4. php curl json post请求_php post请求发送json对象数据参数

    网页中发送请求时,大部分情况都参数以键值组合发送数据的,而一些第三方如java开发的接口中需要发送post请求,请求参数为json类型. 既然要发送json数据,首页我们需要在请求头中定义数据类型为j ...

  5. ajax返回数据输出成表,javascript代码实例教程-ajax请求返回Json格式数据如何循环输出成table形式...

    小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过. 首先,Ajax请求数据,(用的是Jquery的Ajax) [javascript] $(function(){ ...

  6. HTTP get请求发送JSON格式数据

    get请求一般不建议发送JSON格式的数据,单总有一些奇葩系统要求 分享下本人对接途牛 传递get请求 json数据的方法 第一步:平常的get请求不要想了 直接继承 import org.apach ...

  7. ajax请求返回json实例,Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据

    一.AjaxJson.aspx 处理业务数据,产生JSon数据,供JqueryRequest.aspx调用,代码如下: protected void Page_Load(object sender, ...

  8. ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

    AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...

  9. JS使用XMLHttpRequest对象POST收发JSON格式数据

    JavaScirpt中的XMLHttpRequest对象提供了对 HTTP 协议的完全访问,使用该对象可以在不刷新页面的情况与服务器交互数据.XMLHttpRequest是实现AJAX技术的关键对象, ...

最新文章

  1. swift-video-generator:图片加音频生成视频及多视频合并库及演示
  2. 温泉关一役历史资料(电影:斯巴达300勇士)
  3. pfSense book之静态路由
  4. powershell实现设置程序相关性脚本
  5. Sublime text3 代码格式化插件vue
  6. 一个自己实现的简单的智能指针模板类
  7. Kafka : 报错 KafkaController NoSuchElementException : : key not found : [xxx]
  8. 【自然框架】 权限 的视频演示(二): 权限到字段、权限到记录
  9. Java程序设计以及实验指导 实验笔记
  10. FFmpeg下载无损截取HLS视频流
  11. 身份证号码识别(golang)
  12. linux文件恢复工具下载_十大最佳Linux数据恢复工具,用于恢复已删除/损坏的文件(包括优盘,部分工具不支持FAT32等格式)
  13. 2021年2月世界编程语言排行榜
  14. 坐标转换 | EXCEL中WGS84转GCJ02,并在地图上标注
  15. STM32F40xxx 系列芯片引脚图
  16. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案
  17. 使用JavaScript制作待办事项列表
  18. CF197D Infinite Maze 解题报告
  19. JDK、JRE、JVM三者分别表示什么?有何区别?
  20. android 创建aar包

热门文章

  1. 7-2 词典 (15分)19物联网张春
  2. 计算机网络管理员绩效考核,网络工程师专业考核方案
  3. 通俗易懂的安装MySQL步骤
  4. 阿里云不同账号实现内网ping通
  5. 设计模式-优惠券-策略模式
  6. css旋转不围绕圆心,css3:元素总是围绕中心旋转[关闭](css3: element always rotates around center [closed])...
  7. 计算机专业术语session,Session
  8. hdu 1284钱币兑换问题
  9. yum安装报错:“Could not resolve host: mirrors.aliyun.com; Unknown error“--:-- ETA Trying
  10. 小米平板android版本号,你的小米平板系统版本号是多少?