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>
通过浏览器访问返回的数据如下