SSM将后台获取的数据转换成json格式传递到前台页面

1、后台从数据库中获取数据,传递到response中

这一步折腾了我一整天,不知道是因为没有传递到response中还是其他的原因,在前台获取的data,使用alert(data)输出的一直为空值或null
有两种方式可以实现这一步。一是利用注解@ResponseBody,二是利用PrintWriter。最终我是通过@ResponseBody成功完成了这一步,而不知道为什么利用PrintWriter总是写不成功,具体的原因我后面再研究研究吧。下面来介绍下这两种实现方式:

(1)@ResponseBody,即将方法返回值写到response对象中,代码如下:

[java] view plain copy

  1. <span style="font-family:Comic Sans MS;">        @RequestMapping("/addAction.do")
  2. <strong>@ResponseBody//将返回结果写到response中</strong>
  3. public String save(HttpServletRequest request,HttpServletResponse response,Model model,@RequestParam(value="photo",required=false)MultipartFile filedata) throws IllegalArgumentException, IllegalAccessException{
  4. //PrintWriter out=null;
  5. if(filedata!=null&&!filedata.isEmpty()){
  6. //获取图片的文件名
  7. String fileName=filedata.getOriginalFilename();
  8. //获取图片的扩展名
  9. String extensionName=fileName.substring(fileName.lastIndexOf(".")+1);
  10. //新的图片名=获取时间戳+"."图片扩展名
  11. String newFileName=String.valueOf(System.currentTimeMillis())+"."+extensionName;
  12. System.out.println(picUrl);
  13. //将图片上传到服务器
  14. //saveFile(newFileName,filedata);
  15. saveFile(fileName,filedata);
  16. //将图片名称保存至数据库
  17. //photoService.insert(fileName);
  18. }
  19. JSONArray jsonArray=new JSONArray();
  20. for(int i=10;i<30;i++){
  21. Photo p=photoService.getPhotoById(new BigDecimal(i));
  22. jsonArray.add(p);
  23. }
  24. //获取单个json对象
  25. /*JSONObject json=null;
  26. Photo p1=photoService.getPhotoById(new BigDecimal(3));
  27. json=JSONObject.fromObject(p1);*/
  28. <strong>return jsonArray.toString();</strong>
  29. }</span>

这里我是利用net.sf.json.JSONArray;将从数据库读取的对象转换成了json格式。
说到这里,就要提下,要导入的jar包
要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

[html] view plain copy

  1. <span style="font-family:Comic Sans MS;">commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar</span>

这几个jar包缺一不可,不然会报错。
我的maven中pom.xml文件的配置如下:

[html] view plain copy

  1. <span style="font-family:Comic Sans MS;">                <!-- json依赖的jar包 -->
  2. <dependency>
  3. <groupId>net.sf.json</groupId>
  4. <artifactId>json-lib</artifactId>
  5. <version>2.2.2</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>commons-beanutils</groupId>
  9. <artifactId>common-beanu</artifactId>
  10. <version>1.0</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>commons-collections</groupId>
  14. <artifactId>commons-collections</artifactId>
  15. <version>3.2.1</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>commons-logging</groupId>
  19. <artifactId>commons-logging</artifactId>
  20. <version>1.1.1</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>commons-lang</groupId>
  24. <artifactId>commons-lang</artifactId>
  25. <version>2.1</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>ezmorph</groupId>
  29. <artifactId>ezmorph</artifactId>
  30. <version>1.0.6</version>
  31. </dependency></span>

(2) 利用PrintWriter实现如下:

[java] view plain copy

  1. <span style="font-family:Comic Sans MS;">                 response.setCharacterEncoding("UTF-8");
  2. response.setHeader("Cache-Control", "no-cache");
  3. response.setContentType("application/json");
  4. PrintWriter out=null;
  5. try {
  6. out=response.getWriter();
  7. out.print(json.toString());
  8. out.flush();
  9. out.close();
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }</span>

但是这样一直不成功,具体的原因我还不是很清楚。

2、前台获取获取后台传递的json数据,利用jquery的ajax,代码如下:

[html] view plain copy

  1. <span style="font-family:Comic Sans MS;">        function photo(){
  2. var val;
  3. $.ajax({
  4. async:false,
  5. type:‘get‘,//get是获取数据,post是带数据的向服务器发送请求
  6. url:‘addAction.do‘,
  7. dataType:‘json‘,
  8. success:function(data){
  9. val=eval(data);//转换成js对象
  10. alert(val[2].name);
  11. alert(data);
  12. },
  13. error:function(data){
  14. alert("JSON数据获取失败,请联系管理员!");
  15. }
  16. });
  17. }</span>

主要是把ajax的相关参数弄明白,上述获取数据的过程也就清楚了。

3、将json字符串解析为js对象,获取对象的相关值

[html] view plain copy

  1. <span style="font-family:Comic Sans MS;">val=eval(data);//转换成js对象
  2. alert(val[2].name);这一行代码便可以获取对应的name值。</span>

感觉这三步写起来很简单,但是在实现过程中,我还是思考了很久的,主要是第一步的过程一直不行,导致第二步获得的值为空,这里总结下希望以后
不会再在这个地方卡住,通过这个过程,我也明白了SSM前台和后台交互的过程。

原文地址:https://www.cnblogs.com/tanzq/p/8372343.html

时间: 2024-10-29 19:06:53

SSM将后台获取的数据转换成json格式传递到前台页面的相关文章

django-将数据库数据转换成JSON格式(ORM和SQL两种情况)

最近打算搞一个自动化运维平台,所以在看Django的知识. 在实际项目开发中,遇到一个小问题:前后端发生数据交互主流采用的是JSON.前端传数据到服务器端比较简单,稍微麻烦的是服务器端传JSON到前端. 首先数据是从数据库中获取的,Django默认使用的是ORM技术,但是作为一个运维人员,我其实比较反感这类抽象出来的API.因为尽管它对于开发人员来说,将数据库的表抽象成了一个对象,便于开发,不需要写SQL语句,但是这也是后期程序造成性能瓶颈的罪魁祸首(再做一次故障处理时,遇到一条70几行的SQL

android实现json数据的解析和把数据转换成json格式的字符串

利用android sdk里面的 JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串 JSONObject和JSONArray解析json格式的字符串为集合或者一般数据 package com.hck.test; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.

表单数据转换成json格式数据

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script src="js/jquery.min.js"></script> <script type="text/javascript"> (funct

C#自定义将各种对象转换成JSON格式的类

这个C#封装类可以用于将各种格式的数据转换成JSON格式,包括List转换成Json,普通集合转换Json ,DataSet转换为Json ,Datatable转换为Json ,DataReader转换为Json等,如果你需要将对象转换成JSON,可以使用这个类. using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using

C#将datatable数据转换成JSON数据的方法

json数据类型格式:[{id:"1",code:"1",description:"博士"},{id:"2",code:"2",description:"硕士"},{id:"3",code:"3",description:"学士"}] //参考代码public string DataTableToJson(string json

Java基本数据转换成Json代码

JSON是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.是移动开发中数据客户端和服务器端数据交互的不二选择; 尤其是现在HTML5的流行,更显着使用Json 完成数据交互的重要性. 在这里, 我将演示一下Java基本数据转换为Json代码 Json必需包 json-lib-2.3-jdk15.jar commons-lang-2.4.jar commons-logging-1.0.4.jar ezmorph-1.0.6.jar commons-collections

数据转换成json传递

//将奖励转换成json格式 _page.StrRewardToJson = function () { var hdReward = $("#hdReward").find("option:selected").text(); var ltReward = $("#ltReward").find("option:selected").text(); var dxReward = $("#dxReward"

JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法

java代码对象如下: package com.evideostb.billsystem.module.model; import org.codehaus.jackson.map.annotate.JsonSerialize; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; /**  * 响应协议头  * @author zhang

Map对象转换成Json格式的String字符串

1 //action处理页面发来的String,put到map转换成Json格式的String字符串 2 @RequestMapping("/seleteOaOrder") 3 @ResponseBody 4 public Object seleteOaOrder(String param){//param = "小明"; 5 System.out.println("+++++++++++++++++param:"+param); 6 if(pa