第六讲 SpringBoot集成Cros解决跨域问题

文章目录

  • 第六讲 SpringBoot集成Cros解决跨域问题
    • 1、开发RestFul类型接口
      • 1.1 配置pom.xml,引入依赖
      • 1.2 application.yml中添加Mapper自动扫描路径
      • 1.3 编写UserMapper
      • 1.4 编写UserService与UserServiceImpl
      • 1.5 编写UserController
      • 1.6 编写mybatis-config.xml文件
      • 1.7 编写UserMapper.xml文件
      • 1.8 配置MapperScan注解
    • 2、编写test.html文件
      • 2.1 打开test.html,跨域请求测试
      • 2.2 解决方案一:在映射的方法上添加注解@CrossOrigin
      • 2.3 解决方案二:配置全局CROS配置
      • 2.4 解决方案三:配置全局CROS配置

1、开发RestFul类型接口

1.1 配置pom.xml,引入依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--SpringBoot集成Mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency></dependencies>

1.2 application.yml中添加Mapper自动扫描路径

spring:datasource:driver-class-name : com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssmusername: rootpassword: root
mybatis:mapper-locations: classpath:mybatis/mapper/*.xml #springboot集成mybatis 配置Mapper.xml映射文件路径config-location: classpath:mybatis/config/mybatis-config.xml #springboot集成mybatis 配置mybatis配置文件路径

1.3 编写UserMapper


/*** @Description:* @Author: zrblog* @CreateTime: 2018-09-23 22:32* @Version:v1.0*/
@Repository
public interface UserMapper {User queryUserById(Integer id);List<User> queryAllUser();
}

1.4 编写UserService与UserServiceImpl

UserService:

/*** @Description:* @Author: zrblog* @CreateTime: 2018-09-22 10:52* @Version:v1.0*/
public interface UserService {User queryUserById(Integer id);List<User> queryAllUser();
}

UserServiceImpl:


/*** @Description:* @Author: zrblog* @CreateTime: 2018-09-22 10:57* @Version:v1.0*/
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic User queryUserById(Integer id) {return userMapper.queryUserById(id);}@Overridepublic List<User> queryAllUser() {return userMapper.queryAllUser();}
}

1.5 编写UserController


/*** @Description:* @Author: zrblog* @CreateTime: 2018-09-22 11:10* @Version:v1.0*/
@RestController
@RequestMapping("/")
public class UserController {@Autowiredprivate UserService userService;@RequestMapping(value = "user/{id}", method = RequestMethod.GET)@ResponseBodypublic ResponseEntity<JsonResult> queryUserById(@PathVariable(value = "id") Integer id) {JsonResult jsonResult = new JsonResult();try {User user = userService.queryUserById(id);jsonResult.setResult(user);jsonResult.setStatus("success");} catch (Exception e) {jsonResult.setResult(e.getMessage());jsonResult.setStatus("success");}return ResponseEntity.ok(jsonResult);}@RequestMapping(value = "users", method = RequestMethod.GET)@ResponseBodypublic ResponseEntity<JsonResult> queryUserById() {JsonResult jsonResult = new JsonResult();try {List<User> users = userService.queryAllUser();jsonResult.setResult(users);jsonResult.setStatus("success");} catch (Exception e) {jsonResult.setResult(e.getMessage());jsonResult.setStatus("success");}return ResponseEntity.ok(jsonResult);}
}

1.6 编写mybatis-config.xml文件

注意:
// xxxMapper接口可以使用@Mapper注解,但是每个mapper都加注解比较麻烦,所以统一配置@MapperScan在扫描路径在application类中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases></typeAliases>
</configuration>

1.7 编写UserMapper.xml文件


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.springboot.cros.mapper.UserMapper"><resultMap id="BaseResultMap" type="com.springboot.cros.domain.User"><id column="id" property="id" jdbcType="INTEGER"/><result column="username" property="username" jdbcType="VARCHAR"/><result column="age" property="age" jdbcType="INTEGER"/><result column="ctm" property="ctm" jdbcType="TIMESTAMP"/></resultMap><sql id="Base_Column_List">id,username,age,ctm</sql><select id="queryUserById" resultMap="BaseResultMap">SELECT <include refid="Base_Column_List"/>FROM tb_userWHERE id = #{id,jdbcType=INTEGER}</select><select id="queryAllUser" resultMap="BaseResultMap">SELECT<include refid="Base_Column_List"/>FROM tb_user</select>
</mapper>

1.8 配置MapperScan注解

注意:
// xxxMapper接口可以使用@Mapper注解,但是每个mapper都加注解比较麻烦,所以统一配置@MapperScan在扫描路径在application类中

@SpringBootApplication
@MapperScan(value = "com.springboot.mybatis.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

2、编写test.html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link href="bootstrap/css/bootstrap.css" rel="stylesheet" style="text:css"/><script type="application/javascript" src="js/jquery.js"></script><script type="application/javascript"  src="bootstrap/js/bootstrap.js"></script><script type="application/javascript"  type="text/javascript">function crosRequest(){$.ajax({url:'http://localhost:8080/users',type:'get',dataType:'json',success:function(data){console.log(data);}});}</script>
</head>
<body>
<button type="button" class="btn btn-link" onclick="crosRequest()">请求跨域资源</button>
</body>
</html>

2.1 打开test.html,跨域请求测试

报错,不能访问,存在跨域问题

2.2 解决方案一:在映射的方法上添加注解@CrossOrigin

@CrossOrigin@RequestMapping(value = "users", method = RequestMethod.GET)@ResponseBodypublic ResponseEntity<JsonResult> queryAllUser() {JsonResult jsonResult = new JsonResult();try {List<User> users = userService.queryAllUser();jsonResult.setResult(users);jsonResult.setStatus("success");} catch (Exception e) {jsonResult.setResult(e.getMessage());jsonResult.setStatus("success");}return ResponseEntity.ok(jsonResult);}

2.3 解决方案二:配置全局CROS配置

@Configuration
public class CrosConfig {@Beanpublic WebMvcConfigurer crosConfigurer(){return new WebMvcConfigurerAdapter() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS").allowCredentials(false).maxAge(3600);}};}
}

2.4 解决方案三:配置全局CROS配置

@Configuration
public class CrosConfigFilter {@Beanpublic FilterRegistrationBean crosFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration cros = new CorsConfiguration();cros.setAllowCredentials(false);cros.addAllowedOrigin("*");cros.addAllowedHeader("*");cros.addAllowedMethod("*");source.registerCorsConfiguration("/**", cros);FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));bean.setOrder(0);return bean;}
}

第 6 讲 SpringBoot集成Cros解决跨域问题相关推荐

  1. 使用CROS解决跨域问题

    使用CROS解决跨域问题 参考文章: (1)使用CROS解决跨域问题 (2)https://www.cnblogs.com/hackyo/p/7020507.html (3)https://www.c ...

  2. 【node.js从入门到精通】编写接口,使用CROS解决跨域问题,jsonp的接口

    目录 ​编辑 前言 1. get接口 2.post接口 2.跨域问题 1.CROS是什么 2.使用CROS解决跨域问题 3.CORS请求的分类 4.编写jsonp的接口 写在最后 前言 接口是前后端的 ...

  3. Springboot 利用CORS 解决跨域问题

    什么是跨域 首先我们先用springboot 建立1个简单的API, 它返回1个json package com.example.demo_api_cors.controller;import com ...

  4. SpringBoot配置Cors解决跨域请求问题

    原文地址:https://www.cnblogs.com/yuansc/p/9076604.html 一.同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能,不同源的 ...

  5. SpringBoot解决跨域(CROS)问题

    SpringBoot解决跨域问题(CROS) 问题: 前端请求后端出现下图类似问题: Access to fetch at 'http://localhost:8081/user/page?pageN ...

  6. springboot解决跨域CROS问题,用注解@CrossOrigin

    项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...

  7. java 跨域_springboot解决跨域CROS问题,用注解@CrossOrigin

    项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...

  8. springboot中通过cors协议解决跨域问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可 ...

  9. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

最新文章

  1. webpack学习笔记
  2. Golang 并发concurrency
  3. 2018-2019 Exp2 后门原理与实践
  4. 【Qt】modbus之TCP模式读操作
  5. 什么原因可能导致主备延迟?
  6. redhat7.3安装yum源 基于外网的http服务
  7. scrapy框架之分布式操作
  8. 无法在PC上找到,android app 创建的文件 问题.
  9. 【android】关于android10-11存储的一些知识
  10. 基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
  11. JAVA计算机毕业设计基于web的民宿预定系统源码+数据库+系统+lw文档
  12. 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)
  13. 有财学院http://www.godgold.com/learn/title_asp/index.html
  14. MyEclipse全局搜索
  15. 神经网络图像细节分析,神经网络 图像相似度
  16. 如何运用SCQA发现问题?
  17. 基因表达半衰期 | mRNA Half-Life
  18. 网站添加用户风险测评
  19. 把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)
  20. 关于线索二叉树的详解

热门文章

  1. 案例|工业物联网解决方案•冷链智能监控与运维云平台
  2. 了解抖音中视频审核机制,视频如何发才会有流量呢?
  3. GOOGLE搜索从入门到精通v3.0 from:http://www.being.org.cn/tool/google.htm
  4. Eclipse的基本使用与介绍
  5. NOIP 2018提高组复赛C/C++试题及答案详解
  6. 从菜鸟到高手演变-----Java学习方法
  7. 超酷HTML5环形音乐播放器
  8. iOS -- 学习资料总结(转载)
  9. Java面向对象选择题2
  10. element的table扩展列打开位置更换