第 6 讲 SpringBoot集成Cros解决跨域问题
第六讲 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解决跨域问题相关推荐
- 使用CROS解决跨域问题
使用CROS解决跨域问题 参考文章: (1)使用CROS解决跨域问题 (2)https://www.cnblogs.com/hackyo/p/7020507.html (3)https://www.c ...
- 【node.js从入门到精通】编写接口,使用CROS解决跨域问题,jsonp的接口
目录 编辑 前言 1. get接口 2.post接口 2.跨域问题 1.CROS是什么 2.使用CROS解决跨域问题 3.CORS请求的分类 4.编写jsonp的接口 写在最后 前言 接口是前后端的 ...
- Springboot 利用CORS 解决跨域问题
什么是跨域 首先我们先用springboot 建立1个简单的API, 它返回1个json package com.example.demo_api_cors.controller;import com ...
- SpringBoot配置Cors解决跨域请求问题
原文地址:https://www.cnblogs.com/yuansc/p/9076604.html 一.同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能,不同源的 ...
- SpringBoot解决跨域(CROS)问题
SpringBoot解决跨域问题(CROS) 问题: 前端请求后端出现下图类似问题: Access to fetch at 'http://localhost:8081/user/page?pageN ...
- springboot解决跨域CROS问题,用注解@CrossOrigin
项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...
- java 跨域_springboot解决跨域CROS问题,用注解@CrossOrigin
项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...
- springboot中通过cors协议解决跨域问题
2019独角兽企业重金招聘Python工程师标准>>> 1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
最新文章
- webpack学习笔记
- Golang 并发concurrency
- 2018-2019 Exp2 后门原理与实践
- 【Qt】modbus之TCP模式读操作
- 什么原因可能导致主备延迟?
- redhat7.3安装yum源 基于外网的http服务
- scrapy框架之分布式操作
- 无法在PC上找到,android app 创建的文件 问题.
- 【android】关于android10-11存储的一些知识
- 基于java实现学科竞赛管理系统「Springboot+mybatis+lyaui」
- JAVA计算机毕业设计基于web的民宿预定系统源码+数据库+系统+lw文档
- 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)
- 有财学院http://www.godgold.com/learn/title_asp/index.html
- MyEclipse全局搜索
- 神经网络图像细节分析,神经网络 图像相似度
- 如何运用SCQA发现问题?
- 基因表达半衰期 | mRNA Half-Life
- 网站添加用户风险测评
- 把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)
- 关于线索二叉树的详解
热门文章
- 案例|工业物联网解决方案•冷链智能监控与运维云平台
- 了解抖音中视频审核机制,视频如何发才会有流量呢?
- GOOGLE搜索从入门到精通v3.0 from:http://www.being.org.cn/tool/google.htm
- Eclipse的基本使用与介绍
- NOIP 2018提高组复赛C/C++试题及答案详解
- 从菜鸟到高手演变-----Java学习方法
- 超酷HTML5环形音乐播放器
- iOS -- 学习资料总结(转载)
- Java面向对象选择题2
- element的table扩展列打开位置更换