短网址

短网址就是很简短的网址,目前有两种实现方式。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找到原路径,然后跳转即可。

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

原文地址:https://www.cnblogs.com/render-inside/p/5852326.html