天天看點

Java實作使用壓縮算法實作長連結到短連結的轉換 并使用短連結通路真實連結的實踐

最近要實作一個推廣連結的長連結轉換到短連結的功能,不能接的第三方接口,如何生成短連接配接網上這些都說的明明白白了,這裡隻講如何通過短連接配接通路長連結即真實位址。首先說看一下:

轉換原理: 将原url通過一系列方式,轉換成6位短碼(隻要能不重複,随便怎麼方式都行);将長短連結存入資料庫,形成一條對應關系;通路短連結的時候,在資料庫找到對應的長連結,并通過重定向實作原url的通路;(如果你的轉換方式能過還原,也可以不要資料庫,但必須保證轉換後的短碼不能重複)資料庫大概是這個樣子。

Java實作使用壓縮算法實作長連結到短連結的轉換 并使用短連結通路真實連結的實踐

如何生成短連結我就不說了,網上各種方法都可以用,生成的短連結其實一小段字元竄,然後在把域名端口拼接起來就好了。來看一下這個接口是如何實作的。

@RequestMapping("/{shortUrl}")     
public ModelAndView jumpLongLink(HttpServletRequest request, ModelAndView mav, @PathVariable("shortUrl")String shortUrl) {

    String longUrl = "";
    String longurl = shorturlService.restoreUrl(shortUrl);

    if (longUrl!=null) {

        longUrl = longurl;
    }
    mav.setViewName("redirect:" + longUrl);
    return mav;
}      

第一行注解我就不講了,{shortUrl}這個就是動态變化的生成的短連結,shorturlService.restoreUrl()方法是通過傳入得短連結到庫裡查詢對應的長連結即真實位址。然後轉發重定向到真實的位址即可。完整的短連結本地通路:127.0.0.1/端口号/短連結,如:127.0.0.1/8888/2MnQFj,線上的通路位址:域名/短連結,如:www.baidu.com/2MnQFj,如果項目有攔截器,因為短連結是動态變化的,需要在前面加一層路徑,像這樣:127.0.0.1/8888/go/2MnQFj然後就完事了。

繼續閱讀