在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是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 block25 ????????????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 block26 ????????????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数据
【Struts2】SSH如何返回JSON数据
原文地址:http://www.cnblogs.com/HDK2016/p/7475958.html