S2SH+ajax+json-------xxxAction.java文件编写

7 篇文章 0 订阅
6 篇文章 0 订阅
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import net.sf.json.JSONObject;

import com.opensymphony.xwork2.ActionSupport;
import com.xcu.gis.boss.entity.User;

public class JsonTest extends ActionSupport {

    /**  
     *   
     */
    private static final long serialVersionUID = 1L;

    // 将会被Struts2序列化为JSON字符串的对象
    private Map<String, Object> dataMap;

    /**
     * 构造方法
     */
    public JsonTest() {
        // 初始化Map对象
        dataMap = new HashMap<String, Object>();
    }

    /**
     * 测试通过action以视图方式返回JSON数据
     * 
     * @return
     */
    public String testByJSP() {
        User user = new User();
        user.setId("123");
        user.setName("JSONActionJSP");
        user.setPassword("123");
        user.setSay("Hello world !");
        JSONObject jsonObject = new JSONObject();
        jsonObject.accumulate("user", user);
        jsonObject.accumulate("success", true);
        // 这里在request对象中放了一个data,所以struts的result配置中不能有type="redirect"
    ServletActionContext.getRequest().setAttribute("data",
                jsonObject.toString());

        System.out.println("testByJSP***********");
        return SUCCESS;
    };

    /**
     * 测试通过action以Struts2默认方式返回JSON数据
     * 
     * @return
     */
    public String testByAction() {
        // dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
        dataMap.clear();
        List<User> users=new ArrayList<User>();
        for (int i = 0; i < 5; i++) {
            User user = new User();
            user.setId(i+"aa"+i);
            user.setName("JSONActionStruts2");
            user.setPassword("123");
            user.setSay("Hello world!");
            users.add(user);
        }
            dataMap.put("user", users);
        System.out.println(dataMap.get("user"));
        // 放入一个是否操作成功的标识
        dataMap.put("success", true);
        // 返回结果
        System.out.println("testByAction***********");

        return SUCCESS;
    }

    /**
     * 通过action是以传统方式返回JSON数据
     * 
     * @throws IOException
     */
    public void doAction() throws IOException {
        HttpServletResponse response = ServletActionContext.getResponse();
        // 以下代码从JSON.java中拷过来的
        response.setContentType("text/html");
        PrintWriter out;
        out = response.getWriter();
        // 将要被返回到客户端的对象
        User user = new User();
        user.setId("123");
        user.setName("JSONActionGeneral");
        user.setPassword("JSON");
        user.setSay("Hello , i am a action to print a json!");
        JSONObject json = new JSONObject();
        json.accumulate("success", true);
        json.accumulate("user", user);
        out.println(json.toString());

        System.out.println("doAction***********");

        // 因为JSON数据在传递过程中是以普通字符串形式传递的,所以我们也可以手动拼接符合JSON语法规范的字符串输出到客户端
        // 以下这两句的作用与38-46行代码的作用是一样的,将向客户端返回一个User对象,和一个success字段
        // String
        // jsonString="{\"user\":{\"id\":\"123\",\"name\":\"JSONActionGeneral\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
        // out.println(jsonString);
        out.flush();
        out.close();
    }

    /**
     * Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的
     * 
     * @return
     */
    public Map<String, Object> getDataMap() {
        return dataMap;
    }

    public void setDataMap(Map<String, Object> dataMap) {
        this.dataMap = dataMap;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值