首先介绍跨域问题,基于安全的考虑,页面只有在同一个域名下,交流数据,比如网易就不能申请百度的服务(抓取网页那是另外的技术),ajax也是这个使用范围,跨域就失效了。

在移动开发中,手机本身就是web站点,后台pc服务器是另外一个web站点。这样就存在跨域问题。
早先用jsonp方法,或者在srpingmvc中设置拦截器来解决跨域传递json格式数据,但这些都过时了。
下面是最新的。注意只有spring4.3以上(包含4.3)才有效。

1.后台增加3个json的jar包,如下:
jackson-databind
jackson-core
jackson-annotations
附上maven配置,一看就懂了
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.5</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.5</version>
</dependency>

2.后台设置,springmvc,中只要在类上设置一个注解@CrossOrigin,那么这个类就可以接受跨域申请。注意只有spring4.3以上(包含4.3)才支持注解@CrossOrigin,这点很多文章没提到。 @CrossOrigin 的具体只接受某个域名的配置自己去网上查帮助。默认是允许所有域名访问。
具体的代码如下,

@CrossOrigin( maxAge = 3600)//配置这里就行了
@Controller
@RequestMapping("/personController")
public class PersonController {
//篇幅有限内容掏空了,最后由完成代码
}

3. 在返回json数据的方法上加注解:@ResponseBody (一般用于后台发达前端的 json数据)

@RequestMapping(value="getjsonp/{id}",method=RequestMethod.GET)
@ResponseBody
public Collection getjson(@PathVariable("id") Integer id,String callback) throws Exception{
}

4.在获取json数据的参数上加注解:@RequestBody (一般有用前端传递到后台的json数据)
@RequestMapping(value="postjson",method=RequestMethod.POST)
public String postjson(@RequestBody Person p) throws Exception{
}

附上后台接受方法,请注意后台方法直接反java类型就ok,系统会自动转成json格式


剩下的就是客户代码:下面演示了post和get方法,其中get部分去掉注释就可以了。我这里是为方便测试。
< script type= "text/javascript" >
var app =angular.module( "myApp" ,[]);
app .controller( 'firstController' , function ($scope,$http) {
//$scope.xx="xyz";

// $http.get('http://localhost:8080/SSM1/personController/getjsonp/100').success(function (data,status,headers,config){
// console.log(data);
// console.log(status);
// console.log(headers);
// console.log(config);
// }
//
// ).error(function (data,config) {
// })


$http({
url : 'http://localhost:8080/SSM1/personController/postjsonp' ,
method : 'POST' ,122)">data : { id : 1 , name : ' 美国 ' ,122)">age : 16 }
}).success( function (){
console . log ( "success!" );
}). error ( "error" );
})


});

</ script >

最后附上后台完整方法:
@CrossOrigin( maxAge = 3600)
@Controller
@RequestMapping("/personController")
public class PersonController {
//获取前端发出的get请求,前端代码要打开注解
@RequestMapping(value="getjson/{id}",String callback) throws Exception{

Person p1= new Person(1,"aa",30);
Person p2= new Person(2,"bbb",50);
HashMap ps = new HashMap<Integer,Person>();
ps.put(1,p1);
ps.put(2,p2);
System.out.println(id.toString());
System.out.println(callback);
System.out.println("new Person p");
return ps.values();
}


//获取前端发出的post请求
@RequestMapping(value="postjson",method=RequestMethod.POST)
public String postjson(@RequestBody Person p) throws Exception{
System.out.println("id:"+p.getId());
System.out.println("name:"+p.getName());
System.out.println("age:"+p.getAge());
return "ok";
}

}

Angularjs cors 用get、post方法与springmvc后传递json数据的配置的更多相关文章

  1. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  2. ios – 错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器

    当我尝试在设备上运行应用程序时出现此错误.当我在模拟器上运行它并且post请求正常工作时,我没有收到此错误.这是我的代码片段:任何帮助表示赞赏.谢谢解决方法此错误通常会提示DNS相关问题.检查设备上的DNS设置并确认您可以使用Safari或其他浏览器浏览互联网.如果有一个url,你可以在同一台服务器上获取,尝试直接在设备上的Safari中访问它.

  3. ios – Xcode Bot:如何在post触发器脚本上获得.ipa路径?

    我正在使用机器人来存档iOS应用程序,我需要获取.ipa产品路径才能将其发布到我们的分发系统中.机器人设置:并使用脚本打印所有env变量,其中不包含ipa文件的路径.此外,一些变量指向不存在的目录,即:XCS_OUTPUT_DIR这里的env变量输出:除此之外,我还能够确认.ipa文件是在另一个文件夹中创建的(/IntegrationAssets//

  4. ios – 使用CocoaPods post install hook将自定义路径添加到HEADER_SEARCH_PATHS

    解决方法在Podfile中定义一个方法:然后在post_install中调用该方法:

  5. iOS7 Safari中的全屏模式

    我正在使用SenchaTouch开发移动网站.在iOS7Safari中,我无法创建顶级地址栏和下面的工具栏消失了.Sencha过去常常处理iOS6,但iOS7最近的一些变化导致了这个问题.http://java.dzone.com/articles/safari-ios-7-and-html5我阅读了上面的链接&对于HTML5游戏而言,这似乎也是一个问题.一些其他应用程序.适用于iOS6的旧win

  6. ios – 如何使用新的Apple Swift语言发布JSON

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  7. ios – POST请求使用application / x-www-form-urlencoded

    后端开发人员在POST请求中给出了这些说明:>路线:{url}/{app_name/{controller}/{action}控制器和动作应该是小帽子.>API测试链接:http:****************>请求应该使用POST方法.>参数应通过请求内容体(FormUrlEncodedContent)传递.>参数应该是json格式.>参数是关键的.在协议中没有经验5,我搜索并结束了我的代码.

  8. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  9. ios – 在HTTPBody中设置NSDictionary并使用POST方法发送

    我想用POST方法调用Web服务.我需要发布一个带有URL的字典.我的Web服务参数如下:以下是我的要求:但是我收到以下错误:服务器拒绝此请求,因为请求实体的格式不受所请求方法所请求资源的支持解决方法请找到以下代码,将数据发布到Web服务.请注意这是我在我的一个申请中使用的样本.希望这可以帮助.从您的评论“服务器拒绝此请求”服务器是否支持JSON或XML格式.

  10. ios – 如何使用Firebase存储喜欢的内容

    我有一个关于firebase的后端,有像Facebook这样的帖子.所以我需要喜欢这些帖子的功能.问题是如何存储喜欢帖子的喜欢和用户?

随机推荐

  1. Ajax+SpringMVC requestBody

    ajax+SpringMVC经验证,上文写的是比较正确的,所以转过来保存一下.传JSON对象前端后端传JSON字符串+@RequestBody接收前端后端

  2. Ajax异步提交List对象,SpringMvc如何接收?

    Springmvc的一个问题一直被广大开发者所诟病,就是在list对象的转换上一直并不是特别好用,网上很多解决方法关于不同的表单提交方式这里就不多说了,只介绍下ajax方式提交list对象的方法。比如你要通过ajax传递下面一段数据到controller:如果像下面这样写肯定是无法传递到后端的:这样肯定会报错User找不到之类的,那么怎么解决呢?

  3. H5FormData+AJAX+SpringMVC跨域异步上传文件

    最近都没时间整理资料了,一入职就要弄懂业务,整天被业务弄得血崩。总结下今天弄了一个早上的跨域异步上传文件。主要用到技术有HTML5的FormData,AJAX,SpringMVC。注意这个upload.js是自己写的,里面那个ajaxFileUpload并不是jQuery提供的那个上传插件的方法。服务端接口写法:@ResponseBody@RequestMappingpublicvoidaddPicthrowsIOException{System.out.println;response.getWrite

  4. ajax与springmvc传参方式总结

    若传递的是数组对象,需要用第二种方式,否则失败。①前台$.ajax;后台:@RequestMapping@ResponseBodypublicStringdel{return"";}如果不加Traditional,通过观察浏览器中发送的请求,可以发现参数如下:newArray[]:delArray[]:可以看到,参数的名字为newArray[]而不是我们所定义的newArray,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。

  5. AJAX和SpringMVC交互

    AJAX利用jquerySPRING

  6. ajax json异步springmvc http请求返回状态码为406的解决

    是因为缺少json相关jar包,网上很多人只是给出了前两个jar,其实不全,依旧406,应该给出四个

  7. ajax传递json参数到springmvc

    前后端交互,经常出现400或者415,这里写个小笔记,已做参考,不断完善方式一:前台代码:后台代码:

  8. AJAX+SpringMVC 获取后台数据的方式

    利用ajax同步获取服务器的数据,当页面加载完成的时候后台代码:Service层:List转json方法:学习中。。。。。。

  9. AJAX+JQuery+SpringMVC实现图片上传

    利用ajax实现前端与后台的交互,从服务端获取数据,并调回到前端进行解析。下面是前端代码:下面上后端的代码:Controller层Service层:DAO层:以上都是获取数据的部分,下面是提交数据的代码:Controller:Service:这个是文件上传的关键部分以上

  10. $.ajax与SpringMVC的那点事-传参与返回

    由于有@RresponseBody标示,SpringMVC会将头信息中的Content-Type:application/x-www-form-urlencoded(默认值)改为application/json;,即返回为JSON格式,所以ajax的dataType:"json"可有可无。

返回
顶部