专栏首页yukong的小专栏基于springboot+vue.js实现的前后端分离的blog关于技术栈运行截图主要实现代码总结

基于springboot+vue.js实现的前后端分离的blog关于技术栈运行截图主要实现代码总结

关于

其实在很早之前我就开发过一个博客系统,不过由于当时自己的技术不够成熟,所以选择的是ssm+velocity开发。前后端没有分离,编辑器选择是百度uedit,后台使用的jQuery easyui,整个界面不是很美观,而且富文本编辑器很难用。所以一直想想给blog 升级。 现在 blog v2.0 beat即将上线。 它是基于 spring + vue实现的。

技术栈

  • springboot 后台基础框架提供rest api接口
  • springsecurity 提供安全权限认证
  • jwt 提供访问token
  • spring-data-jpa 持久层访问
  • redis 提供数据缓存
  • elasticsearch 提供全文检索
  • 七牛云 图片托管至七牛云oss
  • vue.js 前台基础框架
  • iview 后台管理ui

运行截图

image.png

分隔符

image.png

主要实现代码

package com.blog.qiniu.service.impl;

import com.blog.qiniu.QiNiuProperties;
import com.blog.qiniu.service.QiNiuService;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.InputStream;

/**
 * @author: yukong
 * @date: 2018/6/21 13:50
 * @description:
 */
@Service
public class QiNiuServiceImpl implements QiNiuService, InitializingBean {
    @Autowired
    private UploadManager uploadManager;
    @Autowired
    private BucketManager bucketManager;
    @Autowired
    private Auth auth;
    @Autowired
    private QiNiuProperties qiNiuProperties;
    private StringMap putPolicy;
    @Override
    public Response uploadFile(File file) throws QiniuException {
        Response response = this.uploadManager.put(file, null, getUploadToken());
        int retry = 0;
        while (response.needRetry() && retry < 3) {
            response = this.uploadManager.put(file, null, getUploadToken());
            retry++;
        }
        return response;
    }
    @Override
    public Response uploadFile(InputStream inputStream) throws QiniuException {
        Response response = this.uploadManager.put(inputStream, null, getUploadToken(), null, null);
        int retry = 0;
        while (response.needRetry() && retry < 3) {
            response = this.uploadManager.put(inputStream, null, getUploadToken(), null, null);
            retry++;
        }
        return response;
    }
    @Override
    public Response delete(String key) throws QiniuException {
        Response response = bucketManager.delete(qiNiuProperties.getBucket(), key);
        int retry = 0;
        while (response.needRetry() && retry++ < 3) {
            response = bucketManager.delete(qiNiuProperties.getBucket(), key);
        }
        return response;
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        this.putPolicy = new StringMap();
        putPolicy.put("returnBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"width\":$(imageInfo.width), \"height\":${imageInfo.height}}");
    }
    /**
     * 获取上传凭证
     *
     * @return
     */
    private String getUploadToken() {
        return this.auth.uploadToken(qiNiuProperties.getBucket(), null, 3600, putPolicy);
    }
}

总结

希望大家有兴趣一起完善的可以联系我

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【ssm个人博客项目实战04】mybatis实现博客类别的增删改查分页

    在前面一节我们已经完成后台管理界面的一个实现,在这一节我完成其中的博客类别管理中如果分页显示博客类别信息。

    yukong
  • 【SpringBoot系列05】SpringBoot之整合Mybatis

    【SpringBoot2.0系列02】SpringBoot之使用Thymeleaf视图模板

    yukong
  • 【SpringBoot2.0系列05】SpringBoot之整合Mybatis前言实现

    【SpringBoot2.0系列02】SpringBoot之使用Thymeleaf视图模板

    yukong
  • Android自定义View实现渐变色进度条

    1.渐变色,看起来颜色变化并不复杂,使用LinearGradient应该可以实现。 2.圆头,无非是画两个圆,外圆使用渐变色的颜色,内圆固定为白色。 3...

    砸漏
  • 网页实时聊天之PHP实现websocket

    前言 websocket 作为 HTML5 里一个新的特性一直很受人关注,因为它真的非常酷,打破了 http “请求-响应”的常规思维,实现了服务器向客户端主动...

    枕边书
  • 实例演绎Unix/Linux的"一切皆文件"思想

    我们知道,在Unix/Linux系统中“一切皆文件”,socket也被认为是一种文件,socket被表示成文件描述符。

    Linux阅码场
  • 【Rust日报】 2020-01-11 postgres-query, 新的分词器库tokenizers

    这个crate提供了方便的宏和trait,可帮助编写SQL查询并将其结果收集到静态类型的结构中。

    MikeLoveRust
  • IO通信模型(二)同步非阻塞模式NIO(NonBlocking IO)

    在非阻塞模式中,发出Socket的 accept()和 read()操作时,如果内核中的数据还没有准备好,那么它并不会阻塞用户进程,而是立刻返回一个信息。也就是...

    未读代码
  • Java Web学习总结(四)——Http协议

      HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB...

    Java团长
  • asp.net core 使用HttpClientFactory Polly实现熔断降级

    在NET Core2.1后也是增加更新了很多东西,当然HttpClientFactory更新中的一部分.虽然说HttpClient这个实现了disposable...

    HueiFeng

扫码关注云+社区

领取腾讯云代金券