• 【Struts2】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数据

  • 相关阅读:
    ubuntu18.04 常用命令
    docker常用命令
    git
    y7000 intel nvidia 双显卡安装Ubuntu16.04
    linux中fork() 函数详解
    理解GBN协议
    C++ sort
    最近点对-分治
    方便查看 linux/kernel/system_call.s
    方便查看 linux/kernel/asm.s
  • 原文地址:https://www.cnblogs.com/HDK2016/p/7475958.html
Copyright © 2020-2023  润新知