struts2的配置解释以及使用ajax、创建传输json的两种方式

struts不像springMVC,对json有很好的支持,所以介绍下在struts中如何使用ajax传输json数据。


js:

在js处都是一样的:

$.ajax({
			   type: "post",
			   url: '${root}/json/TbMstJyglbmdm/test_ajax.jspx',
			   cache:false,
			   data:null,
			   dataType:'json',
			  /*  contentType:"text", */
			   async:false,
			   success: function(data){
				   console.log(data);
			   },
			   error: function(XMLHttpRequest, textStatus, errorThrown) {
		             alert('发生错误');
			    }
			}); 



1.使用最基础的方式:

JsonObject json = new JsonObject();
		json.addProperty("msg", "ok");
		json.addProperty("type", "1"); 
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.print(json);
		} catch (java.io.IOException e) {
			e.printStackTrace();
		}
通过response的方式out输出结果。

这里使用的是google的gson包。


2.使用struts2之后支持的struts2-json,先去下载jar包。

  (1)引入jar包,maven配置好信息

  (2)在struts文件中,新建package

<package name="json" namespace="/json" extends="json-default">
	
		<action name="TbMstJyglbmdm/test_ajax" method="test_ajax" class="org.my431.base.web.TbMstJyglbmdmAction">
			<result name="ok" type="json">
				<!-- 这里的jsonData对应action里要返回的map对象 -->  
				<param name="root">jsonData</param>
			</result>
		</action>
		
	</package>
package: 

name:名字唯一

namespace:对应地址的url

extends:必须是json-default

action:

name:对应url地址的名称

class:对应哪个class文件

method:该class文件中的某个方法

result:

name:方法的返回值,如:

public String test_ajax() {
		return "ok";
	}
type:类型必须为json

param:中间的值必须为前台想要接受的值,如我的数据都在jsonData之中。


 (3)写方法:

public String test_ajax() {
		dataMap = new HashMap<String, Object>();
		// 放入一个是否操作成功的标识
		dataMap.put("success", true);
		dataMap.put("name", "张三");
		dataMap.put("age", 11);

		jsonData = new JSONObject();
		jsonData.put("text1", "1");
		jsonData.put("text2", "2");

		
		return "ok";
	}



成功获取数据:



tips:

1.下载的struts2-json必须要版本号与项目的struts相同,不可过高,否则报错。

2.在action处写json时,不要使用com.google.gson,否则传输的数据为空,这里使用的是fastJson




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值