zoukankan      html  css  js  c++  java
  • 【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数据

  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/HDK2016/p/7475958.html
Copyright © 2011-2022 走看看