1. 1. ajax是什么?
  2. * asynchronous javascript and xml:异步的jsxml
  3. * 它能使用js访问服务器,而且是异步访问!
  4. * 服务器给客户端的响应一般是整个页面,一个html完整页面!但在ajax中因为是局部刷新,那么服务器就不用再响应整个页面!而只是数据!
  5. > text:纯文本
  6. > xml:大家都熟悉!!!
  7. > json:它是js提供的数据交互格式,它在ajax中最受欢迎!
  8.  
  9. 2. 异步交互和同步交互
  10. * 同步:
  11. > 发一个请求,就要等待服务器的响应结束,然后才能发第二个请求!中间这段时间就是一个字“卡”
  12. > 刷新的是整个页面!
  13. * 异步:
  14. > 发一个请求后,无需等待服务器的响应,然后就可以发第二个请求!
  15. > 可以使用js接收服务器的响应,然后使用js来局部刷新!
  16.  
  17. 3. ajax应用场景
  18. * 百度的搜索框
  19. * 用户注册时(校验用户名是否被注册过)
  20.  
  21. 4. ajax的优缺点
  22. 优点:
  23. * 异步交互:增强了用户的体验!
  24. * 性能:因为服务器无需再响应整个页面,只需要响应部份内容,所以服务器的压力减轻了!
  25.  
  26. 缺点:
  27. * ajax不能应用在所有场景!
  28. * ajax无端的增多了对服务器的访问次数,给服务器带来了压力!
  29.  
  30. ==========================================
  31. ==========================================
  32.  
  33. ajax发送异步请求(四步操作)
  34.  
  35. 1. 第一步(得到XMLHttpRequest
  36. * ajax其实只需要学习一个对象:XMLHttpRequest,如果掌握了它,就掌握了ajax!!!
  37. * 得到XMLHttpRequest
  38. > 大多数浏览器都支持:var xmlHttp = new XMLHttpRequest();
  39. > IE6.0var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  40. > IE5.5以更早版本的IEvar xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  41.  
  42. * 编写创建XMLHttpRequest对象的函数
  43. function createXMLHttpRequest() {
  44. try {
  45. return new XMLHttpRequest();
  46. } catch(e) {
  47. try {
  48. return new ActiveXObject("Msxml2.XMLHTTP");
  49. } catch(e) {
  50. try {
  51. return new ActiveXObject("Microsoft.XMLHTTP");
  52. } catch(e) {
  53. alert("哥们儿,你用的是什么浏览器啊?");
  54. throw e;
  55. }
  56. }
  57. }
  58. }
  59.  
  60. 2. 第二步(打开与服务器的连接)
  61. * xmlHttp.open():用来打开与服务器的连接,它需要三个参数:
  62. > 请求方式:可以是GETPOST
  63. > 请求的URL:指定服务器端资源,例如;/day23_1/AServlet
  64. > 请求是否为异步:如果为true表示发送异步请求,否则同步请求!
  65. * xmlHttp.open("GET", "/day23_1/AServlet", true);
  66.  
  67. 3. 第三步(发送请求)
  68. * xmlHttp.send(null):如果不给可能会造成部份浏览器无法发送!
  69. > 参数:就是请求体内容!如果是GET请求,必须给出null
  70.  
  71. 4. 第四步()
  72. * xmlHttp对象的一个事件上注册监听器:onreadystatechange
  73. * xmlHttp对象一共有5个状态:
  74. > 0状态:刚创建,还没有调用open()方法;
  75. > 1状态:请求开始:调用了open()方法,但还没有调用send()方法
  76. > 2状态:调用完了send()方法了;
  77. > 3状态:服务器已经开始响应,但不表示响应结束了!
  78. > 4状态:服务器响应结束!(通常我们只关心这个状态!!!)
  79. * 得到xmlHttp对象的状态:
  80. > var state = xmlHttp.readyState;//可能是0、1、2、3、4
  81. * 得到服务器响应的状态码
  82. > var status = xmlHttp.status;//例如为200、404、500
  83. * 得到服务器响应的内容1
  84. > var content = xmlHttp.responseText;//得到服务器的响应的文本格式的内容
  85. > var content = xmlHttp.responseXML;//得到服务器的响应的xml响应的内容,它是Document对象了!
  86.  
  87. xmlHttp.onreadystatechange = function() {//xmlHttp的5种状态都会调用本方法
  88. if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {//双重判断:判断是否为4状态,而且还要判断是否为200
  89. // 获取服务器的响应内容
  90. var text = xmlHttp.responseText;
  91. }
  92. };
  93.  
  94. ==========================================
  95. ==========================================
  96.  
  97. 第二例:发送POST请求(如果发送请求时需要带有参数,一般都用POST请求)
  98.  
  99. * openxmlHttp.open("POST" ....);
  100. * 添加一步:设置Content-Type请求头:
  101. > xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  102. * sendxmlHttp.send("username=zhangSan&password=123");//发送请求时指定请求体
  103.  
  104. ==========================================
  105. ==========================================
  106.  
  107. 第三例:注册表单之校验用户是否注册!
  108.  
  109. 1. 编写页面:
  110. * ajax3.jsp
  111. > 给出注册表单页面
  112. > 给用户名文本框添加onblur事件的监听
  113. > 获取文本框的内容,通过ajax4步发送给服务器,得到响应结果
  114. * 如果为1:在文本框后显示“用户名已被注册”
  115. * 如果为0:什么都不做!
  116.  
  117. 2. 编写Servlet
  118. * ValidateUsernameServlet
  119. > 获取客户端传递的用户名参数
  120. > 判断是否为itcast
  121. * 是:返回1
  122. * 否:返回0
  123.  
  124. ==========================================
  125. ==========================================
  126.  
  127. 响应内容为xml数据
  128.  
  129. * 服务器端:
  130. > 设置响应头:ContentType,其值为:text/xml;charset=utf-8
  131. * 客户端:
  132. > var doc = xmlHttp.responseXML;//得到的是Document对象!
  133.  
  134. =====================
  135.  
  136. 第四例:响应内容为xml数据
  137.  
  138. ==========================================
  139. ==========================================
  140.  
  141. 第五例:省市联动
  142.  
  143. 1. 页面
  144. <select name="province">
  145. <option>===请选择省份===</option>
  146. </select>
  147. <select name="city">
  148. <option>===请选择城市===</option>
  149. </select>
  150.  
  151. 2. ProvinceServlet
  152. * ProvinceServlet:当页面加载完毕后马上请求这个Servlet
  153. > 它需要加载china.xml文件,把所有的省的名称使用字符串发送给客户端!
  154.  
  155. 3. 页面的工作
  156. * 获取这个字符串,使用逗号分隔,得到数组
  157. * 循环遍历每个字符串(省份的名称),使用每个字符串创建一个<option>元素添加到<select name="province">这个元素中
  158.  
  159. 4. CityServlet
  160. * CityServlet:当页面选择某个省时,发送请求!
  161. * 得到省份的名称,加载china.xml文件,查询出该省份对应的元素对象!,把这个元素转换成xml字符串,发送给客户端
  162.  
  163. 5. 页面的工作
  164. * 把<select name="city">中的所有子元素删除,但不要删除<option>===请选择城市===</option>
  165. * 得到服务器的响应结果:doc!!!
  166. * 获取所有的<city>子元素,循环遍历,得到<city>的内容
  167. * 使用每个<city>的内容创建一个<option>元素,添加到<select name="city">
  168.  
  169. ==========================================
  170. ==========================================
  171.  
  172. XStream
  173.  
  174. 1. 什么作用
  175. * 可以把JavaBean转换为(序列化为)xml
  176.  
  177. 2. XStreamjar
  178. * 核心JAR包:xstream-1.4.7.jar
  179. * 必须依赖包:xpp3_min-1.1.4cXML Pull Parser,一款速度很快的XML解析器);
  180.  
  181. 3. 使用步骤
  182. * XStream xstream = new XStream();
  183. * String xmlStr = xstream.toXML(javabean);
  184.  
  185. 4. 使用细节
  186. * 别名:把类型对应的元素名修改了
  187. > xstream.alias("china", List.class):让List类型生成的元素名为china
  188. > xstream.alias("province", Province.class):让Province类型生成的元素名为province
  189. * 使用为属性:默认类的成员,生成的是元素的子元素!我们希望让类的成员生成元素的属性
  190. > xstream.useAttributeFor(Province.class, "name"):把Province类的名为name成员,生成<province>元素的name属性
  191. * 去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素
  192. > xstream.addImplicitCollection(Province.class, "cities"):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
  193. * 去除类的指定成名,让其不生成xml元素
  194. > xstream.omitField(City.class, "description"):在生成的xml中不会出现City类的名为description的对应的元素!
  195.  
  196. ==========================================
  197. ==========================================
  198.  
  199. JSON
  200.  
  201. 1. json是什么
  202. * 它是js提供的一种数据交换格式!
  203.  
  204. 2. json的语法
  205. * {}:是对象!
  206. > 属性名必须使用双引号括起来!单引不行!!!
  207. > 属性值:
  208. * null
  209. * 数值
  210. * 字符串
  211. * 数组:使用[]括起来
  212. * boolean值:truefalse
  213.  
  214. 3. 应用json
  215. * var person = {"name":"zhangSan", "age":18, "sex":"male"};
  216.  
  217. 4. jsonxml比较
  218. * 可读性:XML胜出
  219. * 解析难度:JSON本身就是JS对象(主场作战),所以简单很多
  220. * 流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。
  221.  
  222. -----------------------------------
  223.  
  224. json-lib
  225.  
  226. 1. 是什么?
  227. * 它可以把javabean转换成json
  228.  
  229. 2. jar
  230. *
  231.  
  232. 3. 核心类
  233. * JSONObject --> Map
  234. > toString();
  235. > JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
  236. * JSONArray --> List
  237. > toString()
  238. > JSONArray jsonArray = JSONObject.fromObject(list):把list转换成JSONArray对象

Ajax 及里面的XStream《黑马程序员_超全面的JavaWeb视频教程vedio》的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. 黑马程序员_超全面的JavaWeb视频教程vedio--.ppt,.pptx,.doc,.txt,.docx列表

    \JavaWeb视频教程_day1-资料源码\day01-html目录.txt;\JavaWeb视频教程_day1-资料源码\PPT\HTML.ppt;\JavaWeb视频教程_day1-资料源码\资 ...

  3. EL表达式 EL函数 自定义el函数 《黑马程序员_超全面的JavaWeb视频教程vedio》

    \JavaWeb视频教程_day12_自定义标签JSTL标签库,java web之设计模式\day12_avi\12.EL入门.avi; EL表达式 1. EL是JSP内置的表达式语言! * jsp2 ...

  4. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  5. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  6. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  7. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  8. 黑马程序员_<<String类>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...

  9. 黑马程序员_ C语言基础之指针(三)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移 ...

随机推荐

  1. 当我new class的时候,提示以下错误: Unable to parse template "Class" Error message: This template did not produce a Java class or an interface Error parsing file template: Unable to find resource 'Package Header.j

    你肯定修改过class的template模板,改回去就好了 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")packag ...

  2. Jquery Mobile基本元素

    移动端框架 安装: CDN: <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jq ...

  3. day16-(listener&filter)

    回顾: ajax: 异步请求 原生的ajax(了解) 1.创建一个核心对象 XMLHttpRequest 2.编写回调函数 xmlhttp.onreadystatechange=function(){ ...

  4. 图论分支-倍增Tarjan求LCA

    LCA,最近公共祖先,这是树上最常用的算法之一,因为它可以求距离,也可以求路径等等 LCA有两种写法,一种是倍增思想,另一种是Tarjan求法,我们可以通过一道题来看一看, 题目描述 欢乐岛上有个非常 ...

  5. ELK 安装与基本配置(一)

    对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示),我们将这三个组合起来的技 ...

  6. 面向对象【day07】:析构函数(六)

    二.析构函数 一.概述 析构函数,第一次听说这个函数的名称,那这个函数到底是干嘛的呢?什么才是析构函数呐? 定义:在实例销毁的时候调用的函数 二.析构函数定义 2.1 定义 1 2 3 4 5 6 7 ...

  7. hibernate HQL查询参数设置

    Hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的参数绑定: Prepa ...

  8. MyBatis-parameterType 取出入参值

    SQL 映射文件的几种入参情况 一.单个基本类型参数 public MyUser selectMyUser(Integer id); <!-- #{参数名或任意名}:取出参数值 --> & ...

  9. python jquery初识

     jQuery的介绍 jQuery是一个快速,小巧,功能丰富的JavaScript库.它通过易于使用的API在大量浏览器中运行,使得HTML文档遍历和操作, 事件处理动画和Ajax更加简单.通过多功能 ...

  10. python 生成器和各种推导式

    ##################################总结############################### 什么是迭代器? 可迭代对象通过__iter__()可以转换成迭代 ...