大多数情况下统一资源定位器太长,字符多,不便于发布复制和存储,本文就介绍了通过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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。