zoukankan      html  css  js  c++  java
  • 短网址

    短网址就是很简短的网址,目前有两种实现方式。1.自有短网址域名或第三方,生成短网址后,自动解析。2.生成短网址后,保存短网址与原网址映射关系,由本系统域名对外转发并跳转。使用第二种方法实现方式如下:

     1 public class ShortUrl { 
     2     public static String ShortText(String originalUrl){ 
     3         String key = "com.maidepiao";                
     4         String[] chars = new String[]{         
     5             "a","b","c","d","e","f","g","h", 
     6             "i","j","k","l","m","n","o","p", 
     7             "q","r","s","t","u","v","w","x", 
     8             "y","z","0","1","2","3","4","5", 
     9             "6","7","8","9","A","B","C","D", 
    10             "E","F","G","H","I","J","K","L", 
    11             "M","N","O","P","Q","R","S","T", 
    12             "U","V","W","X","Y","Z" 
    13         }; 
    14         String hex = Encript.md5(key + originalUrl); 
    15         int hexLen = hex.length(); 
    16         int subHexLen = hexLen / 8; 
    17         String[] ShortStr = new String[4]; 
    18          
    19         for (int i = 0; i < subHexLen; i++) { 
    20             String outChars = ""; 
    21             int j = i + 1; 
    22             String subHex = hex.substring(i * 8, j * 8); 
    23             long idx = Long.valueOf("3FFFFFFF", 16) & Long.valueOf(subHex, 16); 
    24              
    25             for (int k = 0; k < 6; k++) { 
    26                 int index = (int) (Long.valueOf("0000003D", 16) & idx); 
    27                 outChars += chars[index]; 
    28                 idx = idx >> 5; 
    29             } 
    30             ShortStr[i] = outChars; 
    31         } 
    32         Random random=new Random();
    33         int j=random.nextInt(4);
    34         /**
    35          * 将短连接与原链接的映射关系保存至redis,由系统向外重定向
    36          */
    37         JedisUtils.set("shortURL:"+ShortStr[j], originalUrl, 0);
    38         return ShortStr[j]; 
    39     } 
    40 } 

    生成短连接后,根据短连接码请求自有系统,和普通的request一样,然后重定向跳转原路径

     1 @Controller
     2 @RequestMapping("")
     3 public class ShortUrlRoute extends BaseController{
     4     //private static final Logger logger = LogManager.getLogger(ShortUrlRoute.class);
     5     
     6     @RequestMapping(value= "/{shortUrlKey}" )  
     7     public String message(@PathVariable String shortUrlKey,HttpServletRequest request,HttpServletResponse response) {
     8         return "redirect:"+JedisUtils.get("shortURL:"+shortUrlKey,"");
     9     }
    10 }

    采用的是springMVC请求,使用redis作为中间的载体,请求短网址时,根据短网址在redis找到原路径,然后跳转即可。

    喜欢请关注微信公众号:码农小麦

  • 相关阅读:
    markdown syntax
    solidity_mapping_implementation
    paramiko 模块安装和使用
    检测服务运行的脚本
    系统非正常关机启动后出现:an error occurred during the file system
    bacula 备份恢复
    socket 网络编程
    Python 8 协程/异步IO
    Linux系统通过console口连接交换机
    Python 7 多线程及进程
  • 原文地址:https://www.cnblogs.com/render-inside/p/5852326.html
Copyright © 2011-2022 走看看