【Struts2】SSH如何返回JSON数据

SSH返回JSON数据

  在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了。在这里以简单的Demo总结两种ssh返回Json格式的数据

项目目录如下

 

主要是看 上图选择的部分 WebRoot里面就是平常的配置

第一种方法是使用com.google.gson.Gson 将对象转化为Json字符串  (gson-1.6.jar) 主要的代码如下

复制代码
 1 package com.javen.tool;
 2 
 3 import java.io.IOException;  4 import java.io.PrintWriter;  5  6 import javax.servlet.http.HttpServletResponse;  7  8 import com.google.gson.Gson;  9 10 public class ResultUtils { 11 public static void toJson(HttpServletResponse response, Object data) 12 throws IOException { 13 Gson gson = new Gson(); 14 String result = gson.toJson(data); 15 response.setContentType("text/json; charset=utf-8"); 16 response.setHeader("Cache-Control", "no-cache"); //取消浏览器缓存 17 PrintWriter out = response.getWriter(); 18  out.print(result); 19  out.flush(); 20  out.close(); 21  } 22 23 24 }
复制代码

在Action中我们直接将返回的数据封装成Map对象即可 再使用上面的工具类即可 

 

复制代码
 1 public String execute() {
 2         Map<String, Object> map = new HashMap<String, Object>();
 3 String status = null;  4 try {  5 System.out.println(name + "" + pass);  6 if (!Tools.isEmpty(name) && !Tools.isEmpty(pass)) {  7 User user = new User();  8  user.setName(name);  9  user.setPassword(pass); 10 List<User> list = userHander.getUserDAO().findByExample(user); 11  System.out.println(list.size()); 12 if (list.size() > 0) { 13 status = "1"; 14 map.put("users", list); 15 } else { 16 status = "null"; 17  } 18 } else { 19 status = "0"; 20  } 21  map.put("status", status); 22  ResultUtils.toJson(ServletActionContext.getResponse(), map); 23 } catch (IOException e) { 24 // TODO Auto-generated catch block 25  e.printStackTrace(); 26  } 27 return null; 28 }
复制代码

  struts 配置如下 

复制代码
1 <package name="default" extends="struts-default" namespace="/"> 2 <global-results> 3 <result name="error">/Error.jsp</result> 4 </global-results> 5 6 <action name="userAction" class="userAction"> 7 </action> 8 </package>
复制代码

通过浏览器访问返回的数据如下(http://127.0.0.1:8080/DataJson/userAction?name=javen&pass=123)

 

 

 

第一种方法是使用Struts配置实现 将对象转化为Json字符串   主要的代码如下

1、private Map<String, Object> jsonResult; 将声明的对象封装生成get和set方法

2、封装查询的数据到Map集合中 代码如下

复制代码
 1 public String userToJson(){
 2         Map<String, Object> map = new HashMap<String, Object>();
 3 String status = null;  4 try {  5 System.out.println(name + "" + pass);  6 if (!Tools.isEmpty(name) && !Tools.isEmpty(pass)){  7 User user = new User();  8  user.setName(name);  9  user.setPassword(pass); 10 List<User> list = userHander.getUserDAO().findByExample(user); 11  System.out.println(list.size()); 12 if (list.size() > 0) { 13 status = "1"; 14  map.put("users", list); 15 } else { 16 status = "null"; 17  } 18 } else { 19 status = "0"; 20  } 21 map.put("status", status); 22  jsonResult=map; 23 return "success"; 24 } catch (Exception e) { 25 // TODO Auto-generated catch block 26  e.printStackTrace(); 27  } 28 return null; 29 }
复制代码

3、配置struts  (注意要extends >>>json-default

复制代码
<!-- 使用struts2  配置来实现 返回Json数据 -->
    <package name="json" extends="struts-default,json-default" namespace="/"> <global-results> <result name="error">/Error.jsp</result> </global-results> <action name="userjson" class="userAction" method="userToJson"> <result type="json" > <param name="root">jsonResult</param> </result> </action> </package>
复制代码

 通过浏览器访问返回的数据如下 

 

原文链接:SSH返回JSON数据

转载于:https://www.cnblogs.com/HDK2016/p/7475958.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值