springboot实现长链接转短链接
自己编写长链接转短链接
原理:将长链接在后台通过转换的方式转成所需的短链接(域名+(项目名)+唯一标识)
长链接转成短链接
/*** 短链接工具类*/
@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实现长链接转短链接相关推荐
- 长URL链接转短链接算法
引言 很多大型网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就是把原始链接很长的地址压缩成只有6 个 ...
- 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...
- http / 关于长连接和短链接的理解
HTTP 协议是基于请求 / 响应模式的,因此只要服务端给了响应,本次 HTTP 请求就结束了,也可以理解成 HTTP 是面向请求 / 响应的. TCP 协议是面上连接的. 综上,如果 HTTP 请求 ...
- HTTP的长链接和短链接说明
HTTP的长链接和短链接实际上是TCP的长连接和短链接.首先我们先介绍一下TCP/IP协议组四层模型.其中包括以下: 应用层:HTTP.FTP.DNS.TELNET等协议 传输层:TCP.UDP 网络 ...
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...
java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...
- 【短链接】——新浪、百度、搜狐等官方长链接转短链接
在项目中难免会生成自己的跳转链接,为了简化链接以及防止微信等屏蔽,可以用一些官方的api将自己的链接转为短链接. ConvertShortUrlUtil.java public class Conve ...
- C#长链接转短链接(调用新浪api)
/// <summary> /// 长链接转短链接 /// </summary> /// <param name="longUrl"> ...
- 我把视频变成链接_如何把长链接变成短链接?3个工具帮你实现
不管是文章还是视频的链接,很多时候都是长长的一串,如果是发给别人的话,就会显得啰里啰嗦,占用空间大不说,还非常难看,使用起来不方便.其实长链接也是能够变成短链接的,下面就带来三个工具,让链接变得美观又 ...
- 微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序
微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序 --生成微信URL Scheme码-->长链接转换成短链接-->通过短信进行推广-->用户访问营销短信 ...
最新文章
- 所有各数据库或文件的连接串定义CHM文件.
- java swing图形界面开发与案例详解source code
- mac mongodb可视化工具_「时序数据库」和MongoDB:第3部分-查询、分析和呈现
- 【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )
- Android 使用RadioButton+Fragment构建Tab
- Cities(2020昆明C)
- 免费12个月!阿里云助力中小企业0成本上云
- Mysql的执行顺序与优化分析
- SQL SERVER数据库开发之触发器的应用
- php动态web开发技术,PHP动态Web开发技术
- 最新手机号段归属地数据库 (2019年6月版) 430826行
- 如何用AD打开PADS的PCB文件?
- 基于pywifi库的暴力破解wifi方法
- js 生成条形码(JsBarcode.all.min.js)
- 学习笔记 第八周 第二篇(修改版)
- 这6款APP和游戏,是苹果选出的2019年年度最佳
- HAL库配置STM32F1系列PWM驱动步进电机(一)
- 在浏览器的标签页显示网站标志图标
- vue3 倒计时3秒后返回首页
- C++23种设计模式(22)-中介者模式
热门文章
- 甲方公司必看!如何高效监控外包项目流程?
- Android中一个APP启动另一个APP并传递参数
- VMware安装和Windows XP系统虚拟机新建
- PVE导入img为磁盘
- 【数据分析可视化】通过apply进行数据预处理
- 一分钟搞懂逻辑运算符(并且) , |(或者) , !(非) , ^(异或) , (短路与) , ||(短路或)之间的关系
- 手机通讯(呼叫流程)
- linux virt-manager vncserver 安装
- LV.2 Linux C语言高级
- leapmotion设备连接Unity3D