首页 > 代码库 > 短网址

短网址

短网址就是很简短的网址,目前有两种实现方式。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= "http://www.mamicode.com/{shortUrlKey}" )   7     public String message(@PathVariable String shortUrlKey,HttpServletRequest request,HttpServletResponse response) { 8         return "redirect:"+JedisUtils.get("shortURL:"+shortUrlKey,""); 9     }10 }

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

 

短网址