1. 程式人生 > >SSM將後臺獲取的資料轉換成json格式傳遞到前臺頁面

SSM將後臺獲取的資料轉換成json格式傳遞到前臺頁面

1、後臺從資料庫中獲取資料,傳遞到response中

這一步折騰了我一整天,不知道是因為沒有傳遞到response中還是其他的原因,在前臺獲取的data,使用alert(data)輸出的一直為空值或null
有兩種方式可以實現這一步。一是利用註解@ResponseBody,二是利用PrintWriter。最終我是通過@ResponseBody成功完成了這一步,而不知道為什麼利用PrintWriter總是寫不成功,具體的原因我後面再研究研究吧。下面來介紹下這兩種實現方式:

(1)@ResponseBody,即將方法返回值寫到response物件中,程式碼如下:

<span style="font-family:Comic Sans MS;">        @RequestMapping("/addAction.do")
	<strong>@ResponseBody//將返回結果寫到response中</strong>
	public String save(HttpServletRequest request,HttpServletResponse response,Model model,@RequestParam(value="photo",required=false)MultipartFile fi           ledata) throws IllegalArgumentException, IllegalAccessException{
		 //PrintWriter out=null;
		if(filedata!=null&&!filedata.isEmpty()){
			//獲取圖片的檔名
			String fileName=filedata.getOriginalFilename();
			//獲取圖片的副檔名
			String extensionName=fileName.substring(fileName.lastIndexOf(".")+1);
			//新的圖片名=獲取時間戳+"."圖片副檔名
			String newFileName=String.valueOf(System.currentTimeMillis())+"."+extensionName;
			System.out.println(picUrl);
			//將圖片上傳到伺服器
			//saveFile(newFileName,filedata);
			saveFile(fileName,filedata);
			//將圖片名稱儲存至資料庫
			 //photoService.insert(fileName);
		}

		
		JSONArray jsonArray=new JSONArray();
		for(int i=10;i<30;i++){
			Photo p=photoService.getPhotoById(new BigDecimal(i));
			jsonArray.add(p);
		}
		
		//獲取單個json物件
		/*JSONObject json=null;
		Photo p1=photoService.getPhotoById(new BigDecimal(3));
		json=JSONObject.fromObject(p1);*/
		<strong>return jsonArray.toString();</strong>
	}</span>

這裡我是利用net.sf.json.JSONArray;將從資料庫讀取的物件轉換成了json格式。
說到這裡,就要提下,要匯入的jar包
要使程式可以執行必須引入JSON-lib包,JSON-lib包同時依賴於以下的JAR包:
<span style="font-family:Comic Sans MS;">commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar 
ezmorph.jar
json-lib-2.2.2-jdk15.jar</span>

這幾個jar包缺一不可,不然會報錯。
我的maven中pom.xml檔案的配置如下:
<span style="font-family:Comic Sans MS;">                <!-- json依賴的jar包 -->
		<dependency>
		<groupId>net.sf.json</groupId>
		<artifactId>json-lib</artifactId>
		<version>2.2.2</version>
		</dependency>
		
		<dependency>
		<groupId>commons-beanutils</groupId>
		<artifactId>common-beanu</artifactId>
		<version>1.0</version>
		</dependency>
		
		<dependency>
		<groupId>commons-collections</groupId>
		<artifactId>commons-collections</artifactId>
		<version>3.2.1</version>
		</dependency>
		
		<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
		</dependency>
		
		<dependency>
		<groupId>commons-lang</groupId>
		<artifactId>commons-lang</artifactId>
		<version>2.1</version>
		</dependency>
		
		<dependency>
		<groupId>ezmorph</groupId>
		<artifactId>ezmorph</artifactId>
		<version>1.0.6</version>
		</dependency></span>

(2) 利用PrintWriter實現如下:
<span style="font-family:Comic Sans MS;">                 response.setCharacterEncoding("UTF-8");
		 response.setHeader("Cache-Control", "no-cache");  
		 response.setContentType("application/json");
		 PrintWriter out=null;
		 try {
			out=response.getWriter();
			out.print(json.toString());
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}</span>

但是這樣一直不成功,具體的原因我還不是很清楚。

2、前臺獲取獲取後臺傳遞的json資料,利用jquery的ajax,程式碼如下:

<span style="font-family:Comic Sans MS;">        function photo(){
	var val;
	$.ajax({
		async:false,
		type:'get',//get是獲取資料,post是帶資料的向伺服器傳送請求
		url:'addAction.do',
		dataType:'json',
		success:function(data){
			val=eval(data);//轉換成js物件
			alert(val[2].name);
			alert(data);
		},
		error:function(data){
			alert("JSON資料獲取失敗,請聯絡管理員!");
		}
	});
}</span>

主要是把ajax的相關引數弄明白,上述獲取資料的過程也就清楚了。

3、將json字串解析為js物件,獲取物件的相關值

<span style="font-family:Comic Sans MS;">val=eval(data);//轉換成js物件
alert(val[2].name);這一行程式碼便可以獲取對應的name值。</span>

感覺這三步寫起來很簡單,但是在實現過程中,我還是思考了很久的,主要是第一步的過程一直不行,導致第二步獲得的值為空,這裡總結下希望以後
不會再在這個地方卡住,通過這個過程,我也明白了SSM前臺和後臺互動的過程。

相關推薦

SSM後臺獲取資料轉換json格式傳遞前臺頁面

1、後臺從資料庫中獲取資料,傳遞到response中 這一步折騰了我一整天,不知道是因為沒有傳遞到response中還是其他的原因,在前臺獲取的data,使用alert(data)輸出的一直為空值或null 有兩種方式可以實現這一步。一是利用註解@ResponseBody,

pythonBug記錄:django資料庫資料轉換JSON格式

1.採用Django Model層,ORM技術 轉換成JSON格式 def getdata(request): # 使用ORM # all()返回的是QuerySet 資料型別;values()返回的是ValuesQuerySet 資料型別 ret = model

如何list型別的資料轉換json格式在伺服器端

今天學習瞭如何將object型別的資料轉換成json格式,並且在返回給瀏覽器,並且在瀏覽器端收到json格式的資料之後在成功的解析成我麼所需要的格式的資料 1:在伺服器端將object型別的資料轉換成json格式需要一些jar包 為了方便說清楚,以示例為主來

用fastjson物件的列表轉換json格式,並讀寫.json檔案

import com.alibaba.fastjson.JSON; import org.json.JSONArray; import org.json.JSONObject; public static void main(String[] args) {

JavaScript:表單序列化後的資料轉換json格式

表單序列化可以比較方便的拿到form表單中的資料,但是序列化後的資料是一段url字串.這邊利用方法轉化成json資料格式: var DataDeal = { //將從form中通過

通過Ajax技術,陣列型別資料轉換JSON格式的物件

一、在伺服器端將list型別資料放入JSON物件中的方法  tjyjList=PxcscjbDAO.getTjyjList(pxcscjbQOMap);  //生成JSON物件,用來容納獲得的樣卷陣列  JSONObject jsonObject=new JSONObjec

一個物件集合轉換JSON格式

List<ServiceWorkOrder> serviceWorkOrderList = new ArrayList<ServiceWorkOrder>();         //轉換成JSON各式         JSONArray jsonAr

JavaXML轉換Json格式資料

/** * 將XML解析為JSON,讓Json處理服務支援XML報文 * 依賴包: * 1. jdom-2.0.2.jar : xml解析工具包; * 2. fastjson-1.1.36.jar : 阿里巴巴研發的高效能json工具包 */ p

JSON.parseArray():json格式資料轉換陣列格式

1、這個方法的作用就是將json格式的資料轉換成陣列格式。 2、假設有Person這個類,有json型別資料jsonStr = [{"name":"張三","age":"1"},{"name":"李四","age":"4"}],那麼 List lists = json.p

android 資料轉換JSON資料格式並使用JSONObject解析JSON格式資料

比起XML檔案解析,JSON資料解析的有點在於他的體積小,在網路上傳輸的時候可以更省流量。同時它也有缺點,Json資料的語義性較差,看起來沒有XML直觀。現在JSON已經被大多數開發人員所接受,在網路資料的傳輸當中應用非常廣泛。現在做的專案需要把資料轉換成下面的格式:

用表單格式化外掛jquery.serializejson表單上的資料轉換JSON物件

沒有這個外掛之前要想JS獲取到form表單的資料,在ajax傳到後臺也是蠻痛苦的事,雖然都是簡單用$(“#id”).val()獲取到表單的值,要是量多了也是很磨人的。 好吧,廢話不多說!看下這個jquery.serializejson.js外掛是怎麼給我們帶來

django-數據庫數據轉換JSON格式(ORM和SQL兩種情況)

user 展示 blog serialize 進行 項目開發 不管怎麽說 語句 spa 最近打算搞一個自動化運維平臺,所以在看Django的知識。 在實際項目開發中,遇到一個小問題:前後端發生數據交互主流采用的是JSON。前端傳數據到服務器端比較簡單,稍微麻煩的是服務器端傳

python:xml格式文件轉換json格式文件

Python 腳本 xml轉json 由於json格式的文件在處理起來,有很強的便利性,而工作中每天產生大量的xml格式的文件,所以有需求將xml格式的文件轉換成json格式的文件。下面直接貼出代碼,有兩個版本,根據需求自由選擇: #!/usr/bin/python # -*- coding: u

JS語句後臺獲取資料頁面展示方法原始碼

<!DOCTYPE html> <html>     <head>         <meta charset="utf-8" />   

使用fastjsonlist、map轉換json,出現$ref

這是轉換時出現的問題情況( map >> json ) 引用是通過"$ref"來表示的 引用 描述 "$ref":".." 上一級 "$ref":"@" 當前物件,也就是自引用

用js表單資料封裝json字串

用js將表單資料封裝成json字串 1.js中封裝程式碼: $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, func

Kettle資料JSON格式後通過restClient傳送POST請求

第一步:處理好自己的資料,然後轉成JSON格式,使用JSON Output控制元件,並且把要轉成JSON併發送出去的欄位和元素名稱的對映關係對應好 資料條目行數選擇不填,填數字將會按照填寫的數字拆分資料,會導致後面傳送POST請求變成一條一條傳,效率低下 輸出值outputVal

物件轉換json格式

public static String objectToJson(Object ts){ Gson gson=new Gson(); String jsonSt

泛型資料轉換datatable

泛型類: public class MoudeType { public string RGuid { get; set; } pu

鍵值對的資料 json 格式的 串

  1 /**   2  *    3  * 2009-5-26   4  *    5  *    6  * 將某個物件轉化為Json資料格式   7  * */  8 using System;   9 using System.Collections.Generic;  10 using