//mvc默认是text/plain;charset=ISO-8859-1
@RequestMapping(value = "/xxx", produces = "application/json;charset=UTF-8")
@ResponseBody
public xxx xxx() {return xxx;}

使用jackson:
返回java对象,springmvc会自动调用jackson,将java对象转换成json格式字符串

使用json-lib:
可以将java对象转化为json格式字符串,然后直接返回字符串
不能直接转list等集合,可以将list加到map中,再转map
JSONObject jsonObjectFromMap = JSONObject.fromObject(map);
String jsonStr = jsonObjectFromMap.toString();

跨域:
跨域要在后端增加参数String jsonpCallback,
并将jsonpCallback拼接到返回的json格式字符串中,
String jsonStr = jsonpCallback + "(" + jsonStr + ")";
页面则要设置为:
dataType: 'jsonp',
jsonp: "jsonpCallback",//jsonp的值默认为callback
jsonpCallback:"myJsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
//jsonpCallback=myJsonpCallback将作为参数传给后端,后端获取参数jsonpCallback,并将jsonpCallback参数的值myJsonpCallback作为调用的函数名
//jsonp使用默认值callback,则jsonp和jsonpCallback都可省略

跨域原理:

1.跨域的障碍:
同源策略:基于安全的原因,浏览器使用同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。
简单点说,就是浏览器限制脚本只能和同协议、同域名、同端口的脚本进行交互。

2.绕开障碍:
<script>、<img>、<iframe>等标签拥有跨域的能力,
JSONP就是利用<script>标签绕过浏览器的同源策略,
JSONP是英文JSON with Padding的缩写,是一个非正式传输协,允许服务端生成<script>标签返回给客户端。
返回的<script>标签中就是一个远程js文件,内容是调用本地的一个函数,并将要传输的数据作为该函数的参数

3.分析例子:

$.ajax({
type: "get",
url: "xxx",
dataType: "jsonp",
jsonp: "jsonpCallback",
jsonpCallback:"myJsonpCallback",
success: function(json){
alert(json);
}
});
public String findNearby(String jsonpCallback) {
String json = "{name:'xiaoming'}";
json = jsonpCallback+"("+json+")";//返回的最终字符串为"myJsonpCallback({name:'xiaoming'})"
return json;
}

//这里实际是调用myJsonpCallback函数,并将{name:'xiaoming'}作为参数
//jquery会将success函数封装成myJsonpCallback函数,实际上调用的就是success函数,而参数就是后台的json格式数据
//这样就能在success函数中处理后台传输的数据了

参考:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html

springmvc跨域的更多相关文章

  1. SpringMVC跨域问题排查以及源码实现

    SpringMVC跨域问题排查以及源码实现 最近一次项目中,将SpringMVC版本从4.1.1升级到4.3.10,出现跨域失败的情况.关于同源策略和跨域解决方案,网上有很多资料. 项目采用的方式是通 ...

  2. SpringMvc跨域支持

    SpringMvc跨域支持 在controller层加上注解@CrossOrigin可以实现跨域 该注解有两个参数 1,origins  : 允许可访问的域列表 2,maxAge:飞行前响应的缓存持续 ...

  3. 关于springmvc跨域

    spingMVC 3.X跨域 关于跨域问题,主要用的比较多的是cros跨域. 详细介绍请看https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Acces ...

  4. springmvc跨域(转)

    跨域资源共享 CORS 详解  原文链接:http://www.ruanyifeng.com/blog/2016/04/cors.html   作者: 阮一峰 日期: 2016年4月12日 CORS是 ...

  5. SpringMvc 跨域处理

    导读 由于浏览器对于JavaScript的同源策略的限制,导致A网站(Ajax请求)不能通过JS去访问B网站的数据,于是跨域问题就出现了. 跨域指的是域名.端口.协议的组合不同就是跨域. http:/ ...

  6. (H5)FormData+AJAX+SpringMVC跨域异步上传文件

    最近都没时间整理资料了,一入职就要弄懂业务,整天被业务弄得血崩. 总结下今天弄了一个早上的跨域异步上传文件.主要用到技术有HTML5的FormData,AJAX,Spring MVC. 首先看下上传页 ...

  7. springmvc跨域+token验证(app后台框架搭建二)

    这是app后台框架搭建的第二课,主要针对app应用是跨域的运用,讲解怎么配置跨域服务:其次讲解怎么进行token验证,通过拦截器设置token验证和把token设置到http报文中.主要有如下:   ...

  8. springmvc跨域+token验证

      1)app后台跨域设置      2)拦截器中设置http报文header中token      3)token的生成实现 ==================================== ...

  9. springmvc跨域问题的解决

    如果只想对某个方法开启跨域设置: controller上添加注解: @CrossOrigin(maxAge = 3600) 在特定的方法上添加注解: @CrossOrigin("*" ...

随机推荐

  1. 【BZOJ4560】[JLoi2016]字符串覆盖 KMP+状压DP

    [BZOJ4560][JLoi2016]字符串覆盖 Description 字符串A有N个子串B1,B2,…,Bn.如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠)这样A中的若 ...

  2. ITMS-SERVICES://方式安装IPA在IOS 7.1中的变化

    转:https://laoyur.com/?p=414 iOS7.1中,通过itms-services://方式安装ipa已经发生了改变,.plist文件必须是https://的,.ipa文件的链接则 ...

  3. mysql5.7 安装版安装

    参考 http://dev.mysql.com/doc/refman/5.7/en/installing.html 下载mysq5.7的安装包 http://dev.mysql.com/downloa ...

  4. Leetcode-Convert Sorted List to BST.

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  5. 170303、PHP微信公众平台开发接口 SDK完整版

    <?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved */ define("TOKEN&q ...

  6. pycharm中配置Django运行环境(包括run manage.py task)

    1.特别注意Environment variables(环境变量)的配置 DJANGO_SETTINGS_MODULE=(项目名).settings 如: DJANGO_SETTINGS_MODULE ...

  7. 使用Dell R710 IDRAC挂载虚拟介质

    Dell DRAC,虚拟介质分离或所选虚拟磁盘驱动器的虚拟介质重定向已由另一用户使用 DELL Idrac 一台Dell的R710服务器,远程管理器后发现虚拟介质无法映射,一直提示“虚拟介质分离或所选 ...

  8. 命名空间 <iostream>和<iostream.h> 由程序设计者命名的内存区域

    namespace_百度百科 https://baike.baidu.com/item/namespace/1700121?fromtitle=命名空间 namespace即“命名空间”,也称“名称空 ...

  9. wget -d --header

    wget -d --header="Host:www.sina.com" http://202.108.33.84 domain differ ip 防止Wget递归下载 假设Ng ...

  10. 东方通tongweb linux安装

    1.把安装的bin文件和license.dat文件放到/opt目录下 2.运行$sh Install_TW5.0.0.0_Standard_Linux.bin -i console 命令在 Linux ...