Ajax与SpringMVC

Ajax:Asynchronous JavaScript and XML  异步的JavaScript和XML技术
Ajax应用:侧重与局部刷新/局部交互javascript

XMLHttpRequest对象(内置在浏览器中,js对象)
-------------------------------------------------------------------------------------------------------------------------
Ajax原理:Ajax是多种技术的综合应用.
1.以XMLHttpRequest对象为核心,实现请求的发送和响应结果的接受.
2.以JavaScript语言为基础,实现用户操做和响应结果的解析,呈现到页面.
3.以XML和JSON技术做为数据传输格式.
4.以HTML,CSS等技术作界面及渲染.html

----------------------------------------------------------------------------------------------------------------------
Ajax基本使用(编程步骤)
java

一.发送Aajx请求
1.建立XMLHttpRequest对象 : new XMLHttpRequest();jquery

2.open方法:建立请求 open(get或post,url,同步异步);
  - true:表示异步;false:表示同步;省略时默认异步web

3.send方法:发送请求 send(参数);
  - get请求写null;
  - post请求写参数值"key=value&key=value"ajax

二.服务器端处理
1.编写Servlet或SpringMVC流程处理
2.返回text字符串或JSON格式的数据spring

三.Ajax回调处理
1.onreadystatechange事件: 当readyState属性发生改变时触发
2.readyState属性:属性值0-4,表示Ajax请求处理的过程。4表示请求处理完毕。
3.responseXML属性:获取服务器返回的XML信息
4.status属性:获取服务器响应的HTTP CODE,例如200,404,500等编程

例:1、三
function createXhr(){
    var xhr = null;//存储XMLHttpRequest对象
    if(window.XMLHttpRequest){//非IE浏览器支持
        xhr = new XMLHttpRequest();
    }else{//IE
        xhr = new ActiveObject("Microsoft.XMLHTTP");
    }
    return xhr;
}json

function sendRequest1(){
    //利用XMLHttpRequest对象发送请求
    var xhr = createXhr();
    //建立一个hello.do请求
    //open("get",请求url,同步异步(true为异步))
    xhr.open("get","hello.do",true);
    //注册回调处理函数
    //readyState属性:属性值0-4:表示Ajax请求处理的过程
    //4表示请求出完毕,200表示成功!
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4&&xhr.status==200){
            //获取服务器返回的结果
            var data = xhr.responseText;
            var s1 = document.getElementById("s1");
            s1.innerText = data;
        }    
    }
    //发送Ajax请求,get请求参数为null,post请求参数是提交的数据
    xhr.send(null);    
}浏览器

二.
public class HelloServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter pw = response.getWriter();
        System.out.println(1);
        pw.print("Hello Ajax!");
        pw.close();
    }    
}


web.xml中配置:
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello.do</url-pattern>
  </servlet-mapping>
  <servlet>
------------------------------------------------------------------------------------------------------------------------
如何发送post请求:
xhr.open(“post”,”check.do”,true);
xhr.setRequestHeader(“content-type”,“application/x-www-form-urlencoded”);
xhr.send(“name=”+name);

例:
function sendRequest2(){
    //获取用户名
    var name = document.getElementById("name").value;
    //发送Ajax请求
    var xhr = createXhr();
    xhr.open("post","check.do",true);
    xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4&&xhr.status==200){
            var data = xhr.responseText;
            document.getElementById("s2").innerText = data;
        }
    }
    xhr.send("name="+name);
    document.getElementById("s2").innerHTML = "正在检测中..."
}
-------------------------------------------------------------------------------------------------------------------------
JSON:JavaScript Object Notation
JavaScript对象格式,属于js一种数据类型。
JSON类型格式以下:
var obj = {“key1”:value1,”key2”:value2};
obj.key1;//获取value1值
obj.key2;//获取value2值

例:
//标准的JSON对象
//var obj1 = {"name":"rose","age":20};
//alert(obj1.name);
//alert(obj1.age);

//var obj2 = {"name":"rose","age":20,"friends":["小曲","小樊","小邱","小关","andy"]};
//alert(obj2.friends[3]);

//var obj3 = {"name":"rose","age":20,"address":{"street":"北京中关村","zipcode":"1008611"}};
//alert(obj3.address.street);

//var obj4 = [{"id":1,"name":"北京"},{"id":2,"name":"上海"}]
//alert(obj4[1].name);

-----------------------------------------------------------------------------------------------------------------------
JSON对象的转换

一.js将JSON字符串转成JSON对象
-方法一:eval(“(“+json字符串+”)”);
-方法二:JSON.parse(json字符串);
-方法三:使用第三方js库(略)

例:
var obj5 = '{"id":1,"name":"北京"}';
//将此字符串转换成json对象的方法
//方法1:使用eval();
var obj6 = eval("("+obj5+")");
alert(obj6.id);
//方法2:使用JSON.parse()函数
var obj7 = JSON.parse(obj5);
alert(obj7.name);
//方法3:使用第三方js库,例如json.js或jQuery.js


二.Servlet服务器端将Java实体对象转成JSON字符串
-JSONObject:将单个对象转成JSON字符串
-JSONArray:将集合转成JSON字符串

例:
List<City> cities = getCities();
//将数据转成JSON字符串
JSONArray jsonObj = JSONArray.fromObject(cities);
----------------------------------------------------------------------------------------------------------------------
jQuery对Ajax的支持
-*$.ajax():jQuery中发送请求最基本函数
格式:
$.ajax({
url:地址,
type:请求类型,
data:请求参数,
async:同步|异步,
dataType:返回结果类型,
success:成功回调函数,
error:失败回调函数
});
-----------------------------------------------------------------------------------------------------------------------
Ajax与SpringMVC的整合

1.web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

2.Spring容器:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
    <!-- 配置注解扫描,定义HandlerMapping,支持@RequestMapping -->
    <mvc:annotation-driven/>
    
    <!-- 配置组件扫描,扫描Controller,支持@Controller ,@Service等... -->
    <context:component-scan base-package="com.tedu"/>
</beans>

3.controller:
package com.tedu.controller;
@Controller//扫描
public class LoadCityController {
    @RequestMapping("/loadcities.do")
    @ResponseBody//将方法返回的对象转换成JSON字符串对象输出
    public List<City> execute(){
        List<City> cities = new ArrayList<City>();
        City c1 = new City(1,"合肥");
        City c2 = new City(2,"亳州");
        City c3 = new City(3,"利辛");
        cities.add(c1);
        cities.add(c2);
        cities.add(c3);
        return cities;
    }
}

4.demo.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax+SpringMVC+JSON</title> <script type="text/javascript" src="js/jquery-1.11.1.js"></script> <script type="text/javascript"> $(function(){     $.ajax({         url:"loadcities.do",         type:"get",         dataType:"json",         success:function(data){             for(var i=0;i<data.length;i++){                 var id = data[i].id;                 var name = data[i].name;                 var li = "<li>"+id+" "+name+"</li>";                 $("#cities").append(li);             }         },         error:function(){             alert("加载失败!");         }     });     }); </script> </head> <body> <ul id="cities"> </ul> <ul id="stocks"> </ul> </body> </html>  

相关文章
相关标签/搜索