java前后端数据交互_springMVC前后端多种数据交互

本文详细介绍了SpringMVC中前后端通过AJAX进行数据交互的多种方式,包括无数据交互、传递字符串、传递JSON数据、返回JSON数据以及如何处理HTML页面内容的传输,同时也涉及到URL编码解码的使用。
摘要由CSDN通过智能技术生成

一、 ajax不传数据的时候

$.ajax({

url: "http://localhost:8080/test.do",

type: "POST",

dataType: "text",

success: function(data) {

alert(data);

},

error: function() {

alert("error");

}

});

@RequestMapping(value="test.do",method= RequestMethod.POST,produces = "application/text;charset=UTF-8;")

@ResponseBody

public String test(){

return "后台返回";

}

二、ajax向后台传递一个字符串(注意前后台的编码!)

$.ajax({

url: "http://localhost:8080/test.do",

type: "POST",

dataType: "text",

contentType:"application/text;charset=UTF-8",

data:"前端数据",

success: function(data) {

alert(data);

},

error: function() {

alert("error1");

}

});

@RequestMapping(value="test.do",method= RequestMethod.POST,produces = "application/text;charset=UTF-8;")

@ResponseBody

public String test(@RequestBody String str){

return "后台返回:" + str;

}

三、当ajax要想传递给后台一个json数据,后台解析该json数据。

spring版本不能过高!

org.springframework

spring-webmvc

3.2.4.RELEASE

1. 必须要导入依赖包:jackson-mapper-asl

org.codehaus.jackson

jackson-mapper-asl

1.9.13

2. 注意前端用JSON对象来转换,后台注意使用一个对应于json属性的List接收,并解析!

var arrSend=[];

var jsonSend={"action":"操作1","data":"数据1"};

var jsonSend2={"action":"操作2","data":"数据2"};

arrSend.push(jsonSend);

arrSend.push(jsonSend2);

$.ajax({

url: "http://localhost:8080/test.do",

type: "POST",

dataType: "text",

contentType:"application/json;charset=UTF-8",

data:JSON.stringify(arrSend),

success: function(data) {

alert(data);

},

error: function() {

alert("error1");

}

});

@RequestMapping(value="test.do",method= RequestMethod.POST,produces = "application/text;charset=UTF-8;")

@ResponseBody

public String test(@RequestBody Listajaxposts){

for(ajaxpost ap : ajaxposts){

System.out.print("\naction = " + ap.getAction()+",data="+ap.getData());

}

return "后台已经成功接收到json数据";

}

四、后台把给前端返回json数据

1. 后台返回JSON数据类型:JSONObject  和 JSONArray(json数组) (导入以下的包)

net.sf.json-lib

json-lib

2.4

jdk15

2. 注意前后端的数据类型定义

1、 "application/json;charset=UTF-8"  :定义前端发送的数据类型为  json

2、dataType: "json"  : 定义前端接收的数据类型为  json

3、produces = "application/json;charset=UTF-8;" :定义后台返回的数据类型为  json

$.ajax({

url: "http://localhost:8080/test.do",

type: "POST",

dataType: "json",

contentType:"application/json;charset=UTF-8",

data:JSON.stringify(arrSend),

success: function(data) {

console.log("\n"+data);

},

error: function() {

alert("error1");

}

});

@RequestMapping(value="test.do",method= RequestMethod.POST,produces = "application/json;charset=UTF-8;")

@ResponseBody

public JSONObject test(@RequestBody Listajaxposts){

for(ajaxpost ap : ajaxposts){

System.out.print("\naction = " + ap.getAction()+",data="+ap.getData());

}

JSONObject obj = new JSONObject();

obj.put("KEY1","VALUE1");

return obj;

}

@RequestMapping(value="test.do",method= RequestMethod.POST,produces = "application/json;charset=UTF-8;")

@ResponseBody

public JSONArray test(@RequestBody Listajaxposts){

for(ajaxpost ap : ajaxposts){

System.out.print("\naction = " + ap.getAction()+",data="+ap.getData());

}

JSONArray arr = new JSONArray();

JSONObject obj = new JSONObject();

obj.put("KEY1","VALUE1");

arr.add(obj);

System.out.print(arr);

return arr;

}

五、用字符串的形式完整传输HTML页面内容。

如果把HTML页面的数据当字符串的形式传输给后台,直接传输是不成功的,因为HTML页面中有很多字符是“敏感字符”,所以对于这些敏感字符需要进行转义。你可以尝试挨个挨个在前端先进行转义,然后在java后台再一个一个进行解码。那js 和 java 提供了一个比较方便的方法帮你转义,就是:URL编码转义。

1. js:encodeURI() 函数可把字符串作为 URI 进行编码。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

$('#btn').click(function () {

var strH = '\n' +

' \n' +

'

\n' +

' \n' +

' \n' +

'

';

var strBd = '发送HTML字符串数据\n' +

'

'

\n' +

'

1\n' +

'

2\n' +

'

3\n' +

'

4\n' +

'

5\n' +

'

\n' +

'

\n' +

'

1\n' +

'

2\n' +

'

3\n' +

'

4\n' +

'

5\n' +

'

\n' +

'

';

var End = '\n' +

' ';

var htmlStr = strH+strBd+End;

$.ajax({

url:"htmlInStrTest.do",

type: "POST",

dataType: "text",

contentType:"application/text;charset=UTF-8",

data:encodeURI(htmlStr),

success: function(data) {

alert(data);

},

error: function() {

alert("error in model 2 post EmailHtmlTest.do");

}

});

});

2. java:java.net.URLDecoder.decode

@Controller

public class TestController {

@RequestMapping(value="htmlInStrTest.do",method= RequestMethod.POST,produces = "application/text;charset=UTF-8;")

@ResponseBody

public String htmlInStrTest(@RequestBody String str){

System.out.print("\n\n str = " + str);

String mailHtmlContent = "";

try {

mailHtmlContent = java.net.URLDecoder.decode(str,"UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

System.out.print("\n\n str = " + mailHtmlContent);

return "传输完整HTML字符内容成功";

}

}

六、基于springMVC实现的文件上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值