长链接转短链接

                平常当我们要发送短信,当短信里面包含链接地址的话,通常需要做一下长链接转短链接的功能,这样做就我理解有两个好处,一个是让传输的信息量更少,二个是安全性要好一些。

                 大概讲一下长链接转短链接的原理:切记,不是压缩算法。而是重定向,当我们在长链接转成短链接时会有一个短链接指向长链接的一个映射,然后当我们请求一个短链接的时候,服务器会先根据映射关系从短链接找到长链接,然后重定向到对应的长链接。下面我就写一个简单的例子来演示这个过程。

                 

@Controller
public class RedirectController {

    private static Map container = new HashMap<>();

    @GetMapping("/{shortLink}")
    public void test(@PathVariable String shortLink, HttpServletResponse response) throws IOException {
        String longLink = container.get(shortLink);
        response.sendRedirect(longLink);
    }

    @GetMapping("longLink2ShortLink")
    @ResponseBody
    public String longLink2ShortLink(@RequestParam String longLink){
        String shortLink = getlinkNo();
        container.put(shortLink, longLink);
        return shortLink;
    }

    public String getlinkNo() {
        String linkNo = "";
        // 用字符数组的方式随机
        String model = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[] m = model.toCharArray();
        for (int j = 0; j < 6; j++) {
            char c = m[(int) (Math.random() * 36)];
            // 保证六位随机数之间没有重复的
            if (linkNo.contains(String.valueOf(c))) {
                j--;
                continue;
            }
            linkNo = linkNo + c;
        }
        return linkNo;
    }
}

很简单,一个是生成短链接的方法,一个是从长链接转成短链接,一个是从短链接转发到对应的长链接。

用一个长链接来测试一下看看。

例如有一下长链接

https://www.baidu.com/s?wd=码农之家&rsv_spt=1&rsv_iqid=0xe09f154e0002f475&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&oq=java%25E7%2594%259F%25E6%2588%25906%25E4%25BD%258D%25E9%259A%258F%25E6%259C%25BA%25E5%25AD%2597%25E7%25AC%25A6%25E4%25B8%25B2&rsv_btype=t&inputT=3803&rsv_t=e2dd%2FYmXWkcaqwVIw2vOASAZm1Q9cPVyaP8MOIzBJ2njJMXmfJI8MfR6gAI90abmmCTi&rsv_pq=e42cb94a00037408&rsv_sug3=132&rsv_sug1=84&rsv_sug7=100&rsv_sug2=0&rsv_sug4=3803

其实就是码农之家的百度搜索结果,我们先调用生成短链的服务(longLink2ShortLink)

curl  'http://localhost:/8080/longLink2ShortLink?longLink=https://www.baidu.com/s?wd=码农之家&rsv_spt=1&rsv_iqid=0xe09f154e0002f475&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&oq=java%25E7%2594%259F%25E6%2588%25906%25E4%25BD%258D%25E9%259A%258F%25E6%259C%25BA%25E5%25AD%2597%25E7%25AC%25A6%25E4%25B8%25B2&rsv_btype=t&inputT=3803&rsv_t=e2dd%2FYmXWkcaqwVIw2vOASAZm1Q9cPVyaP8MOIzBJ2njJMXmfJI8MfR6gAI90abmmCTi&rsv_pq=e42cb94a00037408&rsv_sug3=132&rsv_sug1=84&rsv_sug7=100&rsv_sug2=0&rsv_sug4=3803'

返回短链 

AHVB5M

然后我们在浏览器输入http://localhost:8080/AHVB5M

可以看到已经进行了重定向了。

你可能感兴趣的:(java小功能杂谈,java)