在用struts2框架时在Action中返回json数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013972558/article/details/51440388

    在上一篇搭建了struts2开发环境,之前开发一些小项目都是直接使用的servlet,在servlet中返回json数据很容易:在response对象中打开流直接写入json数据就好了。今天学习struts2时也想在action中返回json数据,但是action中并不能直接像servlet那样返回json数据。在这里记录下今天的收获吧!

    在action中返回json数据有两种方法:

    1.在action中得到response对象,然后就和在servlet中返回json数据是相同的。

    2.struts2对json的扩展,下面主要介绍这种方法.

导入需要的jar包

    要使用struts2对json的扩展,我们需要导入struts2-json-plugin-2.1.8.1.jarxwork-core-2.1.6.jar.使用这两个版本的包完美运行,其他版本可能会有差异导致失败!!!

编写action

    struts2把json看成时map对象(键值对,json本身也就是这样....),所以我们在写action时只要有一个map对象就可以了,struts2会对把这个map对象自动的返回给请求页面(需要特定的配置).例如:

public class TestAction extends ActionSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Map<String,Object> jsonData;
	public String getJsonList(){
		jsonData = new HashMap<String,Object>();
		jsonData.put("one", "one's apple");
		return Action.SUCCESS;
	}
	public Map<String,Object> getJsonData() {
		return jsonData;
	}

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

配置struts.xml

    返回json数据的action必须extends json-default包,而且result type属性必须为json

<package name="textJson" namespace="/textJson" extends="json-default">
		<action name="getJsonList" class="cui.schat.action.TestAction" method="getJsonList">
			<result type="json">
				<param name="root">jsonData</param>     <!-- 这里的jsonData对应action里要返回的map对象 -->
			</result>
		</action>
</package>


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页