【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数据
【Struts2】SSH如何返回JSON数据的更多相关文章
- 深入了解Struts2返回JSON数据的原理
首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...
- (转)Struts2返回JSON数据的具体应用范例
转载自 yshjava的个人博客主页 <Struts2返回JSON数据的具体应用范例> 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- Struts2返回JSON数据的具体应用范例
早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一直忙于工作难以抽身,渐渐的也淡忘了此事.直到前两天有同事在工作中遇到这个问题,来找 ...
- Struts2返回JSON数据的具体应用范…
Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- struts2 的验证框架validation如何返回json数据 以方便ajax交互
struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror />才能取出,(EL应该也可以). 如果使 ...
- Struts2返回Json数据(使用Struts2插件)
这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...
- jquery序列化from表单使用ajax提交返回json数据(使用struts2注解result type = json)
1.action类引入struts2的"json-default"拦截器栈 @ParentPackage("json-default") //示例 @Paren ...
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...
- struts返回json数据
想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet ...
随机推荐
- js 前加分号和感叹号的含义
;!function(){}(); ;!有什么用? 从语法上来开.Javascript中分号表示语句结束,在开头加上.可能是为了压缩的时候和别的方法切割一下,表示一个新的语句開始.所以,假设在一个单 ...
- Material Design学习之 ProgreesBar
转载奇怪注明出处:王亟亟的大牛之路 继续我们Material Design的内容,这一篇讲的是进度条,上一篇是Switch地址例如以下:http://blog.csdn.net/ddwhan0123/ ...
- spring结合mockito
转载:https://blog.csdn.net/apexlj/article/details/50298029 mockito可模拟依赖对象的行为,从而简化跨类的测试. maven获取mockito ...
- 单元测试Mockito中的Mock和Spy
转载:https://blog.csdn.net/qq_30141957/article/details/81273829 项目中,有些函数需要处理某个服务的返回结果,而在对函数单元测试的时候,又不能 ...
- mysql生成不重复随机数(unique number generation)
转自:http://blog.csdn.net/dreamer2020/article/details/52049629 问题来源 业务中有时会遇到要生成不重复随机数的情况,例如,新生成一个商品编号. ...
- Android 为何比 iOS 卡?【转载】
Android 卡是必须的,当你的手机装了 20 多个 app,那不卡才叫见鬼了呢,我手机微信都打不开,手机直接自动重启啦~哪种东西生来就是完美的呢?即便是台式机,也是越用越慢.换句话,如果没有特别原 ...
- stingray中的需要注意的地方
TBLROWS中嵌套的单引号需要加倍用作转译
- ADHOC Report 配置
ADHOC Report ADHOC Report - 临时的report,随时可以去系统中按照你选择的条件打出你想看的report Add ADHOC Report --AddReport use ...
- Linux安装和设置Samba服务器
1. 安装 安装前先关闭iptables和SELinux. Centos输入以下命令: yum install samba samba-client Ubuntu输入以下命令: apt-get ins ...
- 让网络编程更轻松和有趣 t-io
原文:https://www.oschina.net/p/t-io 注意:还是尽量去看原文,因为原文下面的评论也很有意思,可以参考大牛的讨论学习到新的东西 授权协议:Apache 开发语言:Java ...