Action怎么返回json类型数据?
方法1,使用struts2的插件struts2-json-plugin-2.3.8.jar(在下载的strut2库文件夹中)。
在struts2.xml中对要返回json的action配置,<package name="jsonPackage" extends="json-default"> 包要继承json-default
result的配置如下
<package name="jsonPackage" extends="json-default">
<action name="testJson" class="testJsonAction">
<result type="json">
<param name="root">result</param>
<param name="contentType">text/html</param>
<param name="noCache">true</param>
</result>
</action>
</package>
在Action中 对要返回的对象 注解
@JSON(name = "newName")
public User getMap() {
User user = new User();
user.setAccountName("admin2");
user.setName("bonker2");
user.setPasswd("12345678");
return user;
}
方法2 使用第三方json库,如GSON。 struts.xml的配置不变,
在Action中对要返回的数据编写getXX的方法。例子如下
public void getResult() throws IOException {
Gson gson = new Gson();
User user = new User();
user.setAccountName("admin");
user.setName("bonker");
user.setPasswd("123456");
// return gson.toJson(user); //这样返回的是字符串,前端拿到的是字符串要进行val()后才是json
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/json;charset=utf-8");
response.setHeader("caChe-Control", "no-cache");
PrintWriter out = response.getWriter();
out.print(gson.toJson(user));
// 清空缓存
out.flush();
// 关闭
out.close();
}
结论:建议使用第一种方案。