博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Struts传递json给easyui的随笔
阅读量:5350 次
发布时间:2019-06-15

本文共 6174 字,大约阅读时间需要 20 分钟。

今天在公司写测试代码,由于公司用的是ssh框架做的商城项目,我想先实现下简单的增删改查,奈何没有很好的后台页面(毕竟不能测试代码直接在他的项目里改啊)

所以想到了淘淘商城中有这个后台的管理页面,打算一试,奈何struts没学好,琢磨好几小时如何把json数据回传给easyui的页面,这里还是推荐大家用谷歌

后台页面使用的是easyui,直接放其中Customer添加页面和后台action的代码吧

customer-add.jsp

1 <%@ page language="java" contentType="text/html; charset=UTF-8"  2     pageEncoding="UTF-8"%>  3 
6 8 10
11
12
13
14
21
22
23
25
26
27
28
30
31
32
33
35
36
37
38
40
41
42
43
45
46
47
48
50
51
57
58
59
65
66
67
68
79
80
81
82
88
89
90
91
93
94
95
96
98
99
登录用户名:
用户密码:
昵称:
手机号:
邮箱:
头像地址:
会员类型: 60 61 采购商 62 供应商 63 64
分享类型: 69 70 普通会员 71 超级终端 72 个人分销商 73 县市分销商 74 省级分销商 75 操盘手(店铺代运营) 76 77 78
商品交易状态: 83 84 可以采购 85 不采购 86 87
支付密码:
微信公众号:
100
101
102
103
提交
重置106 107
108
109

 

如上述代码可见,我这里使用了ajax提交了表单之后等待后台回传个带有状态码的json数据,这样就能调用easyui页面中的ajax响应弹窗,从而完成交互

但是在网上查了好久都没找到几个靠谱的方法,要么讲的太乱……

 

action的代码

1 package shop.hellxz.action; 2  3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.HashMap; 6 import java.util.Map; 7  8 import javax.json.Json; 9 10 import org.apache.struts2.json.JSONUtil;11 import org.springframework.web.bind.annotation.ResponseBody;12 13 import com.alibaba.fastjson.JSON;14 15 import cn.emay.slf4j.helpers.Util;16 import shop.zhangchenguang.pojo.Customer2;17 import shop.zhangchenguang.service.CustomerService;18 import util.action.BaseAction;19 import util.other.Utils;20 21 /**22  * 测试代码Action23  * @author Hellxz24  *25  */26 public class CustomerAction extends BaseAction{27 28     //注入service层29     private CustomerService customerServiceImpl;30     //需要写get、set方法31     public CustomerService getCustomerServiceImpl() {32         return customerServiceImpl;33     }34     public void setCustomerServiceImpl(CustomerService customerServiceImpl) {35         this.customerServiceImpl = customerServiceImpl;36     }37     //跳转到主页38     public String index() throws IOException{39         return "success";40     }41     //保存用户信息42     public void customerSave() throws IOException{43         //获取输出流44         response.setContentType("json/application;charset=UTF-8");45         PrintWriter out = response.getWriter();46         //获取传入数据对象47         Customer2 customer = new Customer2();48         customer.setLoginName(request.getParameter("loginName"));49         customer.setPassword(request.getParameter("password"));50         customer.setNickName(request.getParameter("nickName"));51         customer.setPhone(request.getParameter("phone"));52         customer.setEmail(request.getParameter("email"));53         customer.setPhotoUrl(request.getParameter("photoUrl"));54         customer.setType(Integer.parseInt(request.getParameter("type")));55         customer.setShareType(Integer.parseInt(request.getParameter("shareType")));56         customer.setIsCanBuy(Integer.parseInt(request.getParameter("isCanBuy")));57         customer.setPayPassword(request.getParameter("payPassword"));58         customer.setOpenId(request.getParameter("openid"));59         //补全数据……还没写60         //调用service保存对象61         Object obj = customerServiceImpl.saveOrUpdateObject(customer);62         /**63          * 如果保存的对象是非空的,那么已经保存成功64          * 如果为空,则保存失败65          * 无论保存成功那个与否,都要把json对象写回给客户端,进行判断66          */67         if(Utils.objectIsNotEmpty(obj)){68             out.println(JSON.toJSONString(checkOK()));69         }else{70             out.println(JSON.toJSONString(checkFail()));71         }72     }73      /**74       * @return json对象状态20075       */76     @SuppressWarnings({"unchecked","rawtypes"})77     public Object checkOK(){78         Map m = new HashMap<>();79         m.put("status", 200);80         m.put("msg", "添加成功");81         m.put("data", null);82         return m;83     }84     /**85      * @return json对象状态50086      */87     @SuppressWarnings({"unchecked","rawtypes"})88     public Object checkFail(){89         Map m = new HashMap<>();90         m.put("status", 500);91         m.put("msg", "添加失败");92         m.put("data", null);93         return m;94     }95     96 }

附上struts的配置文件

/WEB-INF/hellxz/jsp/index.jsp
/WEB-INF/hellxz/jsp/{1}-{2}.jsp

 

到这里大家可能明白是怎么实现的了,老规矩捋一下流程:

1、在struts配置文件中让表单提交的请求响应到action中,不需要定义result,

2、响应进来之后,我们定义的方法需要设置void返回值,在方法体就可以通过老办法 request.getParameter()方法获取这些表单中的参数,然后放到pojo中持久化

3、持久化成功会返回一个新的对象,判断这个对象是否为空,然后通过这个结果来对应应该用到的检查方法,这里使用了alibaba的Fastjson中的JSON对象的toJsonString()方法来实现把对象转换成json串

4、通过response.getWriter()方法拿到的输出流,我们使用println()方法打印出来那个json串给浏览器端

5、浏览器端的ajax收到带有状态码200的json串,弹窗提示用户存储成功

 

说着简单,其实就是jsp和servlet时候常用的方法,springmvc用习惯了,反而忘了最基本的方法,罪过罪过。

转载于:https://www.cnblogs.com/hellxz/p/7516020.html

你可能感兴趣的文章
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>