Extjs与Struts2交互,返回JSON数据的两种实现方式

本文介绍了两种在Struts2框架中实现JSON数据交互的方法。方案一使用json-lib库直接写入响应,适用于简单的JSON输出场景;方案二采用struts2-json-plugin插件,支持更复杂的JSON数据结构和Action返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方案1

需要配置jar包:json-lib-2.3-jdk15.jar,

struts.xml不需要配置json result.

Action不支持return返回结果.

返回JSON方式:response.getWriter().write("xxxx");


struts.xml配置案列

<!-- 利用json for jdk lib,通过response.getWriter.write(); -->
    <package name="com.langsin.crm.struts"  extends="struts-default">
          <action name="city" class="cityAction" method="getCities">
            
         </action>  
    </package>


方案2

需要配置jar包struts2-json-plugin-2.1.8.jar.

struts.xml需要配置json result.

Action支持return返回结果(SUCCESS)

返回JSON方式:<param name="includeProperties">propertyName1,propertyName2</param>


struts.xml配置案列

 
         <!-- 利用struts-json-plugin,result type='json' -->
          <action name="city" class="cityAction" method="getCities">
             <result type="json" name="success">   
                  <param name="root">page</param>              
                  <param name="excludeProperties">start,limit</param>
             </result>
         </action>   

       <result type="json">
           <param name="includeProperties">success,url</param>
           <param name="enableGZIP">true</param>
           <param name="noCache">true</param>
       </result>  

Action类参考代码

//方案1
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		page.setTotalCount(cityManager.countCities(pname));
		page.setRoot(cityManager.getCities(pname, page.getStart(),page.getLimit()));
		JSONArray json = JSONArray.fromObject(page.getRoot());//利用json-lib-2.3-jdk15.jar将java对象转换为json字符串对象	
		response.getWriter().write("{totalCount:"+page.getTotalCount() +",data:"+json.toString()+"}");
		return null;

//方案2
		page.setTotalCount(cityManager.countCities(pname));
		page.setRoot(cityManager.getCities(pname, page));
		return SUCCESS;

参考资料

https://struts.apache.org/docs/json-plugin.html






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值