java jsonresult_struts2自定义JSONResult类型,JSON对象化操作

最近学习JSON的时候,数据传输问题。以前比较迷惑JSON类型的数据,老是感觉就是JSON格式数据传输,不方便的很,也很反感。最近项目中用到了一个方法,所以就记录一下,也顺便接收接收大家的意见,完善代码、提高自己技术。

(注:我相信,在我之前肯定有人发过此类代码,我并不与他人相比,只是自己的代码,如果有哪些地方写的不对,不合理的地方,大家指正,虚心受教,但是请不要谩骂!)

json-lib-2.4-jdk15.jar JSON转换格式jar包。 在JSONObject的官网中就有。

Struts的配置

1.基础返回类型的抽象类 BaseResult

(1)在定义struts的返回类型时候,则必须继承StrutsResultSupport这个类

(2)调用父类的构造方法。

package base.web.result;

import org.apache.struts2.dispatcher.StrutsResultSupport;

import com.opensymphony.xwork2.ActionInvocation;

/**

*

* date:2011-10-15 editor:Yq

*

创建文档

*

返回结果类型基础类

*

*

*

* @author YeQing

* @version 2.0

* @since 1.6

*/

public abstract class BaseResult extends StrutsResultSupport{

public BaseResult() {

super();

}

public BaseResult(String location) {

super(location);

}

public boolean isAjax = false;

}

2.自定义返回类型的类 JsonResult

package base.web.result;

import java.io.PrintWriter;

import javax.servlet.ServletContext;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import net.sf.json.JsonConfig;

import org.apache.struts2.ServletActionContext;

import base.web.actions.BaseAction;

import com.opensymphony.xwork2.ActionInvocation;

/**

*

* date:2011-10-15 editor:Yq

*

创建文档

*

自定义返回类型JsonResult类

*

*

*

* @author YeQing

* @version 2.0

* @since 1.6

*/

public class JsonResult extends BaseResult{

protected boolean isAjax = true;

protected void doExecute(String arg0, ActionInvocation invocation)

throws Exception {

//定义上下文的环境

ServletContext sc = ServletActionContext.getServletContext();

HttpServletRequest request = ServletActionContext.getRequest();

HttpServletResponse response = ServletActionContext.getResponse();

response.setCharacterEncoding(request.getCharacterEncoding());

System.out.println(request.getCharacterEncoding());

response.setContentType("application/json");//这里ContentType 需是application/json JS否则会出错。

PrintWriter output = response.getWriter();//获取响应打印

BaseAction baseAction = (BaseAction) invocation.getAction();//获得基础Action类

JSONObject js = new JSONObject();//JSON转换为对象

js.put("model", baseAction.getModel());

/*此处js作为一个对象就像map一样存储自己的数据

baseAction.getModel()是actiond的基础父类

所有的action都必须继承BaseAction,BaseAction的变量 Map model = new HashMap();

则是所有action中数据存放的map, model则是放在struts2的值栈中的数据。

所有的数据,都必须放在model里,然后在jsp页面使用JSTL进行输出.

(也就是,说我将数据放入了model,然后将model放入了JSONObject,成为了JSON对象,

然后在js里获得值,就像点运算符一样。)

                 */

js.write(output);//打印

}

}

3.JS异步请求,在回调函数中获取数据。

this.ajax=function() {

var request = new $WebRequest(basrUrl+"/psw/server/week/ajax.do",0,function(result)

{

alert(result.model.m.one);

//从回调函数的result中

//获取存储的model 然后获取model中的m集合,

//m.one map集合 中的oneKey 的值

});

request.Start();

};

4.补上WeekDataAction的方法。

public String ajax() {

System.out.println("start.......");

Map map = new HashMap();

map.put("one", 1);

map.put("two", 2);

model.put("m", map); //父类的变量

return getResult();

}

结束,有些地方时项目中内容,牵扯类很多不好粘贴,如果大家有更好的办法,告知一下,学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值