【SSH (七) 】使用ajax + json 交互

1,按照之前的介绍先搭建一个struts2+spring的项目。


2,加入json要用的jar包。

(1)json-lib-jdk.jar:这个是java相关的类库,用它可以将普通的java对象转化成json格式的对象;

(2)struts2-json-plugin.jar:是struts2对json的支持,体现在struts的配置文件的result标签;

(2)json-lib-jdk.jar依赖的相关jar文件:会大量调用commons-*的jar,主要有:commons-beanutils-1.8.0.jar,commons-collections-3.1.jar,commons-lang-2.5.jar,commons-lang3-3.2.jar(和前面的不一样,这两个都得要。。。),commons-logging-1.1.3.jar。最后还有一个ezmorph-1.0.3.jar。上面少一个都不能运行。


3,struts2的配置文件:





    
    
    
        
            /WEB-INF/jsp/index.jsp
        
        
        
            
                result
            
        
    

result 的type是json,param的name是root,这是固定的格式,result是action的一个变量,会传到ajax的success函数,在action中要有这个变量的getter方法。


4,Action:

package com.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.bean.People;
import com.opensymphony.xwork2.ActionSupport;

import net.sf.json.JSONObject;

public class AjaxAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String result;
	private String params;
	
	public String execute(){
		  
	    return SUCCESS;
	}
	
	public String f(){
	    data();
		System.out.println("接收到参数: "+params);
		return SUCCESS;
	}
	
	private void data(){
		ArrayList list = new ArrayList();
		People p1 = new People();
		p1.setAddress("a1");
		p1.setName("l1");
		
		People p2 = new People();
		p2.setAddress("a2");
		p2.setName("l2");
		
		list.add(p1);
		list.add(p2);
		
		Map map = new HashMap();
		map.put("hehe", "meme");
		map.put("glgl", list);
		result = JSONObject.fromObject(map).toString();
	}
	public String getResult() {
		return result;
	}
	public void setResult(String result) {
		this.result = result;
	}

	public String getParams() {
		return params;
	}

	public void setParams(String params) {
		this.params = params;
	}

}

把所有的数据都放在一个map中,然后使用jsonobject对象的方法将普通的java对象转化成json格式的对象,result就是json格式对象的string格式,这才是最终返回到ajax的数据。


5,前台:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>



Insert title here





success


$.ajax函数的参数是键值对,可以设置很多东西。

$.post是上面的一个简体版,参数就是string。在success函数里面要访问data,要做一个处理,用eval函数。因为后台返回的是一个string,而这里我们要用面向对象的方式访问,也就是点号,很显然对一个string是不可以的,必须将它转化成js的对象,才行。


后台传来的数据:

【SSH (七) 】使用ajax + json 交互_第1张图片


项目源码:

http://pan.baidu.com/s/1mgY1HSO

你可能感兴趣的:(Struts2,SSH,Struts2,SSH)