自己编写长链接转短链接
原理:将长链接在后台通过转换的方式转成所需的短链接(域名+(项目名)+唯一标识)

长链接转成短链接

/*** 短链接工具类*/
@Component
public class ShortUrlUtils {public static final String SHORT_URL = "shortUrl";   @Autowiredprivate RedisClient redisClient;/*** 根据连接获取短链接*/public String LongToShort(String longUrl){String[] urls = shortUrl(longUrl);Random random = new Random();int num = random.nextInt(4);String url = urls[num];//防止重复Object obj = redisClient.get(ShortUrlUtils.SHORT_URL + ":" + url);if(obj != null) return LongToShort(longUrl);return url;}public String[] shortUrl(String url) {// 可以自定义生成 MD5 加密字符传前的混合 KEYString key = "jixiang" ;// 要使用生成 URL 的字符String[] chars = new String[] { "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" ,"i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" ,"u" , "v" , "w" , "x" , "y" , "z" , "0" , "1" , "2" , "3" , "4" , "5" ,"6" , "7" , "8" , "9" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" ,"I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" ,"U" , "V" , "W" , "X" , "Y" , "Z"};// 对传入网址进行 MD5 加密String sMD5EncryptResult = MD5Util.md5(key + url);String hex = sMD5EncryptResult;String[] resUrl = new String[4];for ( int i = 0; i < 4; i++) {// 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算String sTempSubString = hex.substring(i * 8, i * 8 + 8);// 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用 long ,则会越界long lHexLong = 0x3FFFFFFF & Long.parseLong (sTempSubString, 16);String outChars = "" ;for ( int j = 0; j < 6; j++) {// 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引long index = 0x0000003D & lHexLong;// 把取得的字符相加outChars += chars[( int ) index];// 每次循环按位右移 5 位lHexLong = lHexLong >> 5;}// 把字符串存入对应索引的输出数组resUrl[i] = outChars;}return resUrl;}
}

通过短链接来访问原始的长链接

/*** 短链接跳转*/
@RestController
public class ShortUrlController extends BaseAction {@Autowiredprivate RedisClient redisClient;/*** 接收第三方推送过来的数据* @return*/@RequestMapping(value = "/shortUrl/{message}")public void listParkRecordout(@PathVariable("message") String message, HttpServletRequest request, HttpServletResponse response) throws IOException {Object obj = redisClient.get(ShortUrlUtils.SHORT_URL + ":" + message);if(obj == null) return;//重定向response.sendRedirect(obj.toString());}
}

参考地址:https://blog.csdn.net/u013782879/article/details/80851784

springboot实现长链接转短链接相关推荐

  1. 长URL链接转短链接算法

    引言 很多大型网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就是把原始链接很长的地址压缩成只有6 个 ...

  2. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?

    文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...

  3. http / 关于长连接和短链接的理解

    HTTP 协议是基于请求 / 响应模式的,因此只要服务端给了响应,本次 HTTP 请求就结束了,也可以理解成 HTTP 是面向请求 / 响应的. TCP 协议是面上连接的. 综上,如果 HTTP 请求 ...

  4. HTTP的长链接和短链接说明

    HTTP的长链接和短链接实际上是TCP的长连接和短链接.首先我们先介绍一下TCP/IP协议组四层模型.其中包括以下: 应用层:HTTP.FTP.DNS.TELNET等协议 传输层:TCP.UDP 网络 ...

  5. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...

  6. 【短链接】——新浪、百度、搜狐等官方长链接转短链接

    在项目中难免会生成自己的跳转链接,为了简化链接以及防止微信等屏蔽,可以用一些官方的api将自己的链接转为短链接. ConvertShortUrlUtil.java public class Conve ...

  7. C#长链接转短链接(调用新浪api)

     /// <summary>  /// 长链接转短链接  /// </summary>  /// <param name="longUrl"> ...

  8. 我把视频变成链接_如何把长链接变成短链接?3个工具帮你实现

    不管是文章还是视频的链接,很多时候都是长长的一串,如果是发给别人的话,就会显得啰里啰嗦,占用空间大不说,还非常难看,使用起来不方便.其实长链接也是能够变成短链接的,下面就带来三个工具,让链接变得美观又 ...

  9. 微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序

    微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序 --生成微信URL Scheme码-->长链接转换成短链接-->通过短信进行推广-->用户访问营销短信 ...

最新文章

  1. 所有各数据库或文件的连接串定义CHM文件.
  2. java swing图形界面开发与案例详解source code
  3. mac mongodb可视化工具_「时序数据库」和MongoDB:第3部分-查询、分析和呈现
  4. 【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )
  5. Android 使用RadioButton+Fragment构建Tab
  6. Cities(2020昆明C)
  7. 免费12个月!阿里云助力中小企业0成本上云
  8. Mysql的执行顺序与优化分析
  9. SQL SERVER数据库开发之触发器的应用
  10. php动态web开发技术,PHP动态Web开发技术
  11. 最新手机号段归属地数据库 (2019年6月版) 430826行
  12. 如何用AD打开PADS的PCB文件?
  13. 基于pywifi库的暴力破解wifi方法
  14. js 生成条形码(JsBarcode.all.min.js)
  15. 学习笔记 第八周 第二篇(修改版)
  16. 这6款APP和游戏,是苹果选出的2019年年度最佳
  17. HAL库配置STM32F1系列PWM驱动步进电机(一)
  18. 在浏览器的标签页显示网站标志图标
  19. vue3 倒计时3秒后返回首页
  20. C++23种设计模式(22)-中介者模式

热门文章

  1. 甲方公司必看!如何高效监控外包项目流程?
  2. Android中一个APP启动另一个APP并传递参数
  3. VMware安装和Windows XP系统虚拟机新建
  4. PVE导入img为磁盘
  5. 【数据分析可视化】通过apply进行数据预处理
  6. 一分钟搞懂逻辑运算符(并且) , |(或者) , !(非) , ^(异或) , (短路与) , ||(短路或)之间的关系
  7. 手机通讯(呼叫流程)
  8. linux virt-manager vncserver 安装
  9. LV.2 Linux C语言高级
  10. leapmotion设备连接Unity3D