• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > spring boot ajax跨域的两种方式

spring boot ajax跨域的两种方式

作者:刘冬 字体:[增加 减小] 来源:互联网 时间:2017-05-28

刘冬 通过本文主要向大家介绍了spring boot ajax,spring boot 跨域,spring boot教程,spring boot,spring boot是什么等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

 java语言在多数时,会作为一个后端语言,为前端的php,node.js等提供API接口。前端通过ajax请求去调用java的API服务。今天以node.js为例,介绍两种跨域方式:CrossOrigin和反向代理。

 一、准备工作

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.example</groupId>
 <artifactId>spring-boot-15</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>spring-boot-15</name>
 <description>Demo project for Spring Boot</description>
 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.3.RELEASE</version>
 <relativePath/> <!-- lookup parent from repository -->
 </parent>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 <java.version>1.8</java.version>
 </properties>
 <dependencies>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
 </dependency>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
 </dependency>
 </dependencies>
 <build>
 <plugins>
  <plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
 </plugins>
 </build>
</project>
</div>

pom.xml

App.java

package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
public class App {
 public static void main(String[] args) {
 SpringApplication.run(App.class, args);
 }
}
</div>

User.java

package com.example;
public class User {
 public int id;
 public String name;
 public int age;
}
</div>

MainController.java:

package com.example;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * *
 */
@RestController
public class MainController {
 @GetMapping("findAllUser")
 public List<User> findAllUser() {
 List<User> list = new ArrayList<>();
 for (int i = 0; i < 20; i++) {
  User user = new User();
  list.add(user);
  user.id = i;
  user.name = "name_" + i;
  user.age = 20 + i;
 }
 return list;
 }
}
</div>

项目结构如下图所示:

访问http://localhost:8080/findAllUser

使用HBuilder创建node.js express项目:

选择ejs模板引擎:

index.ejs文件代码如下:

<!DOCTYPE html>
<html>
 <head>
 <title>
  <%= title %>
 </title>
 <link rel='stylesheet' href='/stylesheets/style.css' />
 <script src="//cdn.bootcss.com/angular.js/1.5.6/angular.min.js"></script>
 <script type="text/javascript">
  var app = angular.module('app', []);
  app.controller('MainController', function($rootScope, $scope, $http) {
  $http({
   method: 'GET',
   url: 'http://localhost:8080/findAllUser'
  }).then(function successCallback(r) {
   $scope.rows = r.data;
  });
  });
 </script>
 </head>
 <body ng-app="app" ng-controller="MainController">
 <h1><%= title %></h1>
 <p>Welcome to
  <%= title %>
 </p>
 <br />
 <table>
  <tr ng-repeat="row in rows">
  <td>{{row.id}}</td>
  <td>{{row.name}}</td>
  <td>{{row.age}}</td>
  </tr>
 </table>
 </body>
</html>
</div>

 通过angular.js的http方法调用api请求

右键运行项目:

运行效果:

发现调用ajax请求时跨域失败。

二、spring boot后台设置允许跨域

这时,修改MainController类,在方法前加@CrossOrigin注解:

/**
 * 
 *
 */
@RestController
public class MainController {
 @CrossOrigin(origins = "http://localhost:3000")
 @GetMapping("findAllUser")
 public List<User> findAllUser() {
 List<User> list = new ArrayList<>();
 for (int i = 0; i < 20; i++) {
  User user = new User();
  list.add(user);
  user.id = i;
  user.name = "name_" + i;
  user.age = 20 + i;
 }
 return list;
 }
}
</div>

这是声明findAllUser方法允许跨域,

也可以修改App.java,来实现全局跨域:

package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@SpringBootApplication
public class App {
 public static void main(String[] args) {
 SpringApplication.run(App.class, args);
 }
 @Bean
 public WebMvcConfigurer corsConfigurer() {
 return new WebMvcConfigurerAdapter() {
  @Override
  public void addCorsMappings(CorsRegistry registry) {
  registry.addMapping("/**").allowedOrigins("http://localhost:3000");
  }
 };
 }
}
</div>

registry.addMapping("/**"):为根目录的全部请求,也可以设置为"/user/**",这意味着是user目录下的所有请求。

在访问http://localhost:3000,效果如下:

三、通过node.js的方向代理实现跨域

node.js提供了一些反向代理的中间件,能轻而易举的实现跨域,而不需要spring boot做任何设置。

安装express-http-proxy中间件

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • spring boot ajax跨域的两种方式
  • spring boot ajax跨域的两种方式

相关文章

  • 2017-05-28spring data jpa分页查询示例代码
  • 2017-05-28Java多线程并发编程(互斥锁Reentrant Lock)
  • 2017-05-28SpringBoot拦截器实现对404和500等错误的拦截
  • 2017-08-17Java监控工具、调优、调试辅助函数
  • 2017-05-28使用Lucene实现一个简单的布尔搜索功能
  • 2017-05-28爬虫技术详解
  • 2017-05-28Java中四种访问权限资料整理
  • 2017-05-28JVM 方法调用之静态分派(详解)
  • 2018-01-02java基础-抽象类(补充)
  • 2017-05-28Kotlin开发Android应用实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java 多线程并发编程_动力节点Java学院整理
    • win7下安装配置tomcat,java运行环境
    • Mac Book中Java环境变量设置的方法
    • 详解Spring MVC 集成EHCache缓存
    • JVM 方法调用之静态分派(详解)
    • Java微信公众平台开发(5) 文本及图文消息回复的实现
    • Java微信公众平台开发(1) 接入微信公众平台
    • SpringBoot(十)之邮件服务
    • Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理
    • 根据list中对象的属性去重和排序小结(必看篇)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有