最近学习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();

}

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

java jsonresult_struts2自定义JSONResult类型,JSON对象化操作相关推荐

  1. java 获取自定义参数类型_Springboot中使用自定义参数注解获取 token 中用户数据...

    使用自定义参数注解获取 token 中User数据 使用背景 在springboot项目开发中需要从token中获取用户信息时通常的方式要经历几个步骤 拦截器中截获token TokenUtil工具类 ...

  2. java中自定义日期类_java日期操作自定义类

    每次当需要对日期进行处理的时候,总是会记不住库.方法和格式,所以就自己简单封装了下:包含了大部分功能,部分不常用的没有实现. package com.tunicorn.marketing.utils; ...

  3. 将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

    将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型 问题描述: java里面时间类型转换成json数据就成这样了: "cr ...

  4. js与java对json的操作

    JSON呢,是现在大部分,并且主流的传递数据的方式. 今天讲一下javascript的java对json的操作 提到js,当下就有一个比较主流的插件,vue.js,这个插件程序员没用过也都听说过吧, ...

  5. 自定义一个类型实现go时间类型的json和bson的序列化和反序列化

    自定义一个类型实现go时间类型的json和bson的序列化和反序列化 需求 实现 -自定义JSONTime类型 如何使用? 需求 go语言在时间 和 json 转换时使用 yyyy-MM-dd HH: ...

  6. java的tcp实时接收json格式报文_tcp - 如何使用带有rsocket Java的TcpClientTransport将自定义数据格式转换为JSON - 堆栈内存溢出...

    我有一个Tcp数据提供程序,它使用管道定界符发出数据,该定界符需要转换为JSON,然后存储在NoSQL数据存储区中. 我已使用RSocket中的TcpClientTransport协议连接到提供程序, ...

  7. Java 自定义枚举类型

    1.定义枚举 public abstract class Enum {private final String m_name;private final String m_title;private ...

  8. Spring MVC__自定义日期类型转换器

    WEB层采用Spring MVC框架,将查询到的数据传递给APP端或客户端,这没啥,但是坑的是实体类中有日期类型的属性,但是你必须提前格式化好之后返回给它们.说真的,以前真没这样做过,之前都是一口气查 ...

  9. Java AOP自定义注解

    一.背景 在之前文章:Java注解详解中,主要介绍了注解的含义.作用.以及常用的各类注解.今天主要介绍在Springboot中如何实现一个自定义注解,通过自定义注解去实现一些定制化的需求. 二.了解元 ...

最新文章

  1. MySQL数据库修改字段的长度
  2. Redis - 事务操作与详解
  3. 使用Cygwin编译W600 sdk
  4. 1高并发服务器:多进程服务器
  5. Nginx 搭建图片缓存服务器-转
  6. [转帖]Report painter
  7. (扩展欧几里德算法)zzuoj 10402: C.机器人
  8. CVPR 2020 论文大盘点-目标检测篇
  9. 如何查看域控是谁,域控是哪台机器
  10. Mybatis 与Spring整合及原理
  11. 胡寿松自动控制原理第七版勘误-152页
  12. 人工智能白皮书(2022年)
  13. 微型计算机软件有哪些,微型计算机常用到的应用软件有哪些?
  14. layui date插件设置不能跨月查询
  15. 那些年,我们一起找过的工作
  16. html相册 自动,ACDSee的HTML相册生成
  17. 关于电感元件的反电动势
  18. 面试题:spring的循环依赖问题以及如何解决
  19. 最适合Java开发者的大数据工具和框架
  20. 记javascript设计模式

热门文章

  1. Android封闭系统,最封闭的Android系统—魅族Flyme
  2. bar在mysql是什么数据类型,BarTender数据源类型有哪些?
  3. vscode中安装了matplotlib,pandas,numpy等包,但还是报错,怎么解决?
  4. 计算机网络的概念(一)
  5. 知客CRM签约湖南省粮油食品进出口集团有限公司
  6. 使用python给女朋友自动发晚安
  7. Gitee申请token
  8. Ubuntu20.04 配置静态固定IP地址
  9. exp-00056:遇到oracle错误 12154,EXP-00056 遇到 ORACLE 错误 12154 ORA-12154 TNS 无法解析指定...
  10. Rust宏编程指南【Macro】