欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ajax_json

程序员文章站 2022-04-14 23:11:59
AJAX框架Day1 1、Ajax引言 a) 概念 Asynchronous Javascript And XML (异步请求 javaScript And XML) b) 传统的请求 2、异步请求的开发 a) 异步请求对象的创建 javascript: XmlHttpRequest对象 xhr C ......

ajax框架day1

1、ajax引言

a)       概念 asynchronous javascript and xml (异步请求 javascript  and  xml)

ajax_json

b)      传统的请求

  1. 发起传统请求的方式
    1. 地址栏
    2. 超级连接
    3. 表单
    4. javascript: location.href 函数
    5. ajax_json 
  2. 传统请求的问题
    因为传统请求响应的是新的页面(刷新了页面)。所以用户就必须要等待响应结果,才可以进行后续的操作。
    用户体验差。
  1. 基于异步请求的特点
    响应的内容不是新的页面,是一个页面的局部,字符串信息,所以用户在使用异步请求的时候,不需要等待响应的,直接就可以进行后续处理。
  1. 传统请求与异步请求的区别
    1. 响应内容
      传统响应的内容:新的页面,刷新页面
      异步响应的内容:页面的局部,字符串信息
    2. 对于用户的操作
      传统的请求:等待响应
      异步的请求:不需要等待响应,用户可以直接进行后续的操作
  2. 建议在合适的场景下,都使用异步请求,提高用户的体验

2、异步请求的开发

a)   异步请求对象的创建                   
  javascript: xmlhttprequest对象 xhr
  chrome|ff|safari中  xmlhttprequest
  var xhr = new xmlhttprequest();
  ie(ie5 ie6)中 activexobject
  var xhr = new activexobject(“microsoft.xmlhttp”);

b)      xhr对象的使用

ajax_json

 

 

3、用户名检测的案例
ajax_json

 

 

不再跳转

ajax_json

 

 ajax_json

 

 

控制表单是否提交,提交时检测

4、ajax的开发步骤

ajax_json

 

 ajax_json

 

ajax_json

 

 

 

a)       创建异步请求
ie系  xhr = new activexobject(“microsoft.xmlhttp”);
非ie系 xhr = new xmlhttprequest();

b)      发送请求    querystring
xhr.open(“get”,url?name=suns&pwd=123&sex=male);
xhr.send(null);
xhr.open(“post”,url,true(是否使用异步));
xhr.setrequestheader(“content-type”,”application/x-www-form-urlencoded”);


为什么设置:模拟表单
基本web的开发 只能使用表单提交数据,使用表单提交数据时默认指定
enctype=”application/x-www-form-urlencoded”,但是现在使用ajax编程,不再使用
<form标签了也就没有方式提供enctype属性对应的值了。那么这时候需要通过在
请求头中手工设置application/x-www-form-urlencoded来模拟表单。
xhr.send(“name=suns&pwd=123&sex=male”);,传递数据要加引号,

ajax_json

 

 

c)       监听响应
xhr.onreadystatechange = function(){
    if(xhr.readystate==4&&xhr.status==200){
          xhr.responsetext
          dom编程
    }
}

d)      服务器端:
不再进行页面的跳转,而是通过返回字符串信息,完成交互
request作用域 不使用
底层就是使用response.getwriter()获取输出流 进行交互

5、json协议串
json协议串,本质上就是一个字符串。

ajax_json

 

 

a)       作用:异构的编程体系中,进行数据的传输,交互。

b)      核心:

  1. 定义了字符串的格式
    1. 对象形式ajax_json

       

       

    2. 集合形式ajax_json

       

       


    3. 内嵌对象ajax_json

       

       


    4. map类型 与 对象的形式一致ajax_json

       

       


    5. json协议解析 多种工具可以自动支持转换
      java端:jsonlib  gson(google)   fastjson(ali)  jakeson(springmvc)
      gson//对象是大括弧,集合小括弧

注意map是当做对象来写,大括弧

  1. gson的基本应用
    gson gson = new gson();
    gson.tojson();
  2. gson的特殊应用场景
  3. ajax_json

     

     

a)       json字符串的属性名与对象属性名不一致的问题

ajax_json

 

 

b)      解决对象回环问题

ajax_json

 

 

  1. 注解 @expose
    没有使用@expose的注解的属性 将会被排除,不会被转换
    ajax_json

     

     


太不灵活,复杂都用gsonbuilder

 

  1. 使用接口回调,
    实现一个排除策略的接口(告示gson 排除的内容)

  2. ajax_json

     

     ajax_json

     

     

可以指定多个排除策略,更灵活

c)       特殊的日期类型问题

  1. 实现接口
  2. ajax_json

     

     

  3. 注册到gsonbuilder
    ajax_json

     

     ajax_json

     

     


  4. json转化成js对象 (浏览器内置,jquery,ext..)
    浏览器内置对象 ,后续建议使用jquery
    json.parse(jsonstring) -----  js对象
                       -----  js的数组
    ajax_json

     

     



6、案例 :应用ajax技术实现 显示所用用户的信息

ajax_json

 

 

ajax框架day2

1、springmvc对于ajax的支持

a)       底层整合 原始整合

ajax_json

 

 

b)      通过@responsebody
springmvc自动的把对象转换成json串,并通过字符输出流输出。
注意:@responsebody封装的对象转换json的组件为 jackson
环境搭建:引入jackson相关的jar包
开发步骤;

ajax_json

 

 

  1. 使属性名与json字符串的key不一致
    1. ajax_json

       

       

  2. 日期类型的格式
    @jsonformat(pattern="yyyy-mm-dd")
  3. 空值类型不转换
    @jsoninclude(include.non_null)
  4. 如何忽略某个属性
    @jsonignore
  5. 中文字符集会自动处理

原来处理方法

ajax_json

基于实战自动日期处理与空值处理
ajax_json

2、struts2与ajax技术集成

ajax_json

 

 

3、基于ajax的编程方式思考:
    现在的开发体系中,除了使用一个ajax的ui框架(easyui ext dojo)进行编程之外,剩下所用的应用,在开发时,都应该部分环节中使用ajax.

   1 局部操作 与 服务器端交互
   2 最好结构简单

ajax_json