Springboot实现跨域请求

Springboot实现跨域请求,第1张

        为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下, 不能读写对方资源这叫做同源, 同源策略是浏览器的安全基石

        如果一个请求地址里面协议, 域名和端口号都相同,就属于同源

        在同源策略下,非同源的网站之间发送AJAX请求,如有需要,可通过降域或其他技术实现

     cors(Crosss-OriginResource Sharing) ,CORS可以在不破坏既有规则的情况下,通过后端服务器实现

CORS接口, 从而实现跨域通行,CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持

       21: 简单请求

           在CROS之前, 发送>

BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。

beatlsql 优点

引入依赖

这几个依赖都是必须的。

整合阶段

由于springboot没有对 beatlsql的快速启动装配,所以需要我自己导入相关的bean,包括数据源,包扫描,事物管理器等。

在application加入以下代码

在resouces包下,加META_INF文件夹,文件夹中加入spring-devtoolsproperties:

restartincludebeetl=/beetl-232jar

restartincludebeetlsql=/beetlsql-231jar

在templates下加一个indexbtl文件。

加入jar和配置beatlsql的这些bean,以及resources这些配置之后,springboot就能够访问到数据库类。

举个restful的栗子

初始化数据库的表

bean

数据访问dao层

接口继承BaseMapper,就能获取单表查询的一些性质,当你需要自定义sql的时候,只需要在resouses/sql/accountmd文件下书写文件:

其中“=== ”上面是唯一标识,对应于接口的方法名,“ ”后面是注释,在下面就是自定义的sql语句,具体的见官方文档。

web层

这里省略了service层,实际开发补上。

通过postman 测试,代码已全部通过。

个人使用感受,使用bealsql做了一些项目的试验,但是没有真正用于真正的生产环境,用起来非常的爽。但是springboot没有提供自动装配的直接支持,需要自己注解bean。另外使用这个orm的人不太多,有木有坑不知道,在我使用的过程中没有遇到什么问题。另外它的中文文档比较友好。

不知道你的两个项目连的是不是同一个数据库,如果是同一个数据库的话可以放进去数据库中,另一个项目去数据库读取

或者两个项目在同一台服务器的话可以放在内存中,然后去读,比如用redis

1新建一个Spring Boot应用,命名为config-client(随意)

2编辑pomxml,主要依赖内容如下:

3创建 bootstrapproperties 文件,配置服务的基本信息和配置中心服务端信息

springapplicationname :对应配置文件规则中的 {application}

springcloudconfigprofile :对应配置文件规则中的 {profile}

springcloudconfiglabel :对应配置文件规则中的

springapplicationuri :配置中心的地址

4创建TestController

使用 @Value 绑定配置服务中配置的属性,也可以使用Environment对象来获取配置属性。

启动config-server、config-client

访问: >

假设实现一个注册用户的功能,在controller 层,他会先进行校验参数,如下:

以上代码有什么问题嘛? 其实没什么问题,就是校验有点辣眼睛

。正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:

我们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上, spring boot 有个 validation 的组件,我们可以拿来即用。引入这个包即可:

引入包后,参数校验就非常简洁啦,如下:

然后在 UserParam 参数对象中,加入 @Validated 注解哈,把错误信息接收到 BindingResult 对象,代码如下:

如果你在你们项目代码中,看到controller 层报文返回结果,有这样的:

也有这样的:

显然,如果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如有的人喜欢用 Result 处理结果, 有点人

喜欢用 Response 处理结果,可以想象一下,这些代码有多乱。

所以作为后端开发,我们项目的响应结果,需要 统一标准的返回格式

。一般一个标准的响应报文对象,都有哪些属性呢?

响应状态码一般用枚举表示哈:

因为返回的数据类型不是确定的,我们可以使用泛型,如下:

有了统一的响应体,我们就可以优化一下controller 层的代码啦:

日常开发中,我们一般都是自定义统一的异常类,如下:

在controller 层,很可能会有类似代码:

这块代码,没什么问题哈,但是如果 trycatch 太多,不是很优雅。

可以借助注解 @RestControllerAdvice ,让代码更优雅。 @RestControllerAdvice 是一个应用于 Controller 层的切面注解,它一般配合 @ExceptionHandler 注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。

还是原来的 UserController ,和一个会抛出异常的userService的方法,如下:

我们再定义一个全局异常处理器,用 @RestControllerAdvice 注解,如下:

我们有想要拦截的异常类型,比如想拦截 BizException 类型,就新增一个方法,使用 @ExceptionHandler 注解修饰,如下:

Redis是一个nosql数据库,可以存储key-value值。因为其底层实现中,数据读写是基于内存,速度非常快,所以常用于缓存;进而因其为独立部署的中间件,常用于分布式缓存的实现方案。

常用场景有:缓存、秒杀控制、分布式锁。

虽然其是基于内存读写,但底层也有持久化机制;同时具备集群模式;不用担心其可用性。

关于Redis的使用,可以参考《Redis的使用方法、常见应用场景》

以上就是关于Springboot实现跨域请求全部的内容,包括:Springboot实现跨域请求、SpringBoot Controller接收参数的几种常用注解方式、Spring Boot教程第5篇:beatsql等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9469418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论
请登录后评论...
登录
后才能评论 提交

评论列表(0条)
保存
{label}