,,java实现短地址服务的方法(附代码)

,,java实现短地址服务的方法(附代码)

大多数情况下统一资源定位器太长,字符多,不便于发布复制和存储,本文就介绍了通过Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)实现短地址服务,减少了许多使用太长统一资源定位器带来的不便,需要的朋友可以参考下

假设下面是你的视频网站链接列表,如果别人想爬取你的数据十分轻松,看规则就知道数据库是序列自增的

http://www.xxxx.com/video/1

http://www.xxxx.com/video/2

http://www.xxxx.com/video/3

那么解决这一问题,我们可以使用短地址,不对外暴露真实链接,使用对称加密是一个很好的方案。

哈希德是一个很好的选择,它提供了JS/PHP/JAVA/PYTHON等编程语言的实现,这里我使用的就是它。

下面是我基于叶片框架搭建的Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)短地址服务。

创建表` t_url `(

` id ' int(10)NOT NULL AUTO _ INCREMENT,

`网址'文本不为空,

主键(` id `)

)ENGINE=InnoDB AUTO_INCREMENT=15默认字符集=utf8

路由

@路径

公共类索引路由{

//盐值

私有静态最终哈希id哈希ids=新哈希id(“blade-short URL”);

私有URL模型URL model=new URL model();

@Route('/:key ')

public void get(请求请求,响应响应){

String key=req.pathParam(':key ').replaceAll('[^A-Za-z0-9]',“);

long[]numbers=hashid。解码(键);

if(null==numbers | | numbers。长度1){

response.text('没有找到');

返回;

}

int id=(int)numbers[0];

String result=get(id).getUrl();

if (result==null) {

response.text('没有找到');

返回;

}

response .重定向(结果);

}

@Route(value='/',method=HttpMethod .获取)

公共字符串索引(){

返回"索引";

}

@Route(value='/',method=HttpMethod .帖子)

公共字符串保存(请求请求,响应响应){

String resJsp=' index

string longUrl=请求。查询(“URL”);

如果(!isURL(longUrl)) {

request.attribute('error ','无效的URL’);

返回resJsp

}

整数id=this。保存(longUrl);

if (id==0) {

request.attribute('error ','保存失败');

返回resJsp

}

string hash=hashids。编码(id);

request.attribute('url_hash ',hash);

System.out.println('id=' id ',URL _ hash=' hash);

返回resJsp

}

私有整数保存(字符串url) {

返回urlModel.insert().param('url ',url).executeAndCommit();

}

私有UrlModel get(int id) {

返回URL模型。fetchbypk(id);

}

私有最终字符串REGEX='\\b(https?|ftp|file)://[-a-zA-Z0-9 @#/%?=~_|!]*[-a-zA-Z0-9 @ #/%=~ _ |]';

私有布尔isURL(字符串url) {

if(StringKit.isNotBlank(url)){

模式模式=模式。编译(REGEX);

匹配器matcher=模式。匹配器(URL);

if (matcher.find()) {

返回真实的

}

}

返回错误的

}

}

实现效果:

代码位置:https://github。com/blade Java/blade-短URL

以上就是本文的全部内容,希望对大家的学习有所帮助。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: