图书馆系统

9 篇文章 0 订阅

从头用腾讯服务器搭了一个图书馆的前后端分离系统,前端使用Vue框架进行开发,后端使用springboot框架进行开发,有些费劲的地方记录一下,之前数据库Error executing DDL那个就是其中的一个。

跨域问题

后端逻辑运行起来之后,前端对其进行访问,会出现跨域问题。见图
在这里插入图片描述
跨域问题本质由于浏览器同源策略限制导致的,同源策略见浏览器同源策略,大体是同源策略一种安全策略,帮助阻隔恶意文档,减少可能被攻击的媒介。如果两个 URL 的protocol、port(如果有)和host都相同的话,则这两个URL是同源。
使用@CrossOrigin来解决跨域问题。默认情况下,@CrossOrigin允许在@RequestMapping注解中指定的所有源和HTTP方法。

日志配置

logback-spring.xml只有在Spring应用程序运行的时候才生效,即带有@SpringBootApplication注解的类启动的时候才会生效。存放的位置是在SpringApplication主类所在的项目的resources目录,也就是application.yml或者application.properties所在的目录。

异常处理

对于一些参数不正确,或者没有数据等情况,程序不应正确返回,需要抛出对应的异常信息。则需要@RestControllerAdvice进行统一异常处理,@RestControllerAdvice都是对Controller进行增强的,可以全局捕获spring mvc抛的异常。@ExceptionHandler(value = Exception.class)的作用是用来捕获指定的异常。

@RestControllerAdvice
public class LibraryExceptionHandler {

	private static Logger LOGGER = LoggerFactory.getLogger(LibraryExceptionHandler.class);

    private Response getResponse(String content){
        ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.readValue(content,Response.class);
        } catch (IOException e) {
            return Response.error("","字符串转为对象出错");
        }
    }

	/* 客户端请求的语法错误,服务器无法理解,抛出400状态码异常,H400Exception自定义类 */
    @ExceptionHandler(value = {H400Exception.class, HttpClientErrorException.BadRequest.class})
    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
    public Response h400(Exception e){
        if (e instanceof H400Exception){
            LOGGER.error(e.getMessage(),e);
            H400Exception h400 = (H400Exception)e;
            return Response.error(h400.getError(),h400.getMessage());
        }else {
            HttpClientErrorException.BadRequest badRequest = (HttpClientErrorException.BadRequest)e;
            String responseBodyAsString = badRequest.getResponseBodyAsString();
            return getResponse(responseBodyAsString);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值