`
yuan_j
  • 浏览: 37547 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 整合java短链接生成方法..

阅读更多
CMyEncrypt.java类
public class CMyEncrypt {
//十六进制下数字到字符的映射数组
private final static String[] hexDigits = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
/**把inputString加密*/
    public static String md5(String inputStr){
        return encodeByMD5(inputStr);
    }
    /**
     * 验证输入的密码是否正确
     * @param password 真正的密码(加密后的真密码)
     * @param inputString 输入的字符串
     * @return 验证结果,boolean类型
     */
     public static boolean authenticatePassword(String password,String inputString){
         if(password.equals(encodeByMD5(inputString))){
             return true;
         }else{
             return false;
         }
     }
     /**对字符串进行MD5编码*/
     private static String encodeByMD5(String originString){
         if (originString!=null) {
             try {
                 //创建具有指定算法名称的信息摘要
                 MessageDigest md5 = MessageDigest.getInstance("MD5");
                 //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算
                 byte[] results = md5.digest(originString.getBytes());
                 //将得到的字节数组变成字符串返回 
                 String result = byteArrayToHexString(results);
                 return result;
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
         return null;
     }
     /**
      * 轮换字节数组为十六进制字符串
      * @param b 字节数组
      * @return 十六进制字符串
      */
      private static String byteArrayToHexString(byte[] b){
          StringBuffer resultSb = new StringBuffer();
          for(int i=0;i<b.length;i++){
              resultSb.append(byteToHexString(b[i]));
          }
          return resultSb.toString();
      }
      //将一个字节转化成十六进制形式的字符串
      private static String byteToHexString(byte b){
          int n = b;
          if(n<0)
          n=256+n;
          int d1 = n/16;
          int d2 = n%16;
          return hexDigits[d1] + hexDigits[d2];
      }
      public static void main(String[] args) {
CMyEncrypt.md5("http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml");
}
}

Test.java测试类
public class Test {
public static void main(String[] args) {
  // 长连接: http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml
       // 新浪解析后的短链接为: http://t.cn/h1jGSC

       String sLongUrl = " http://tech.sina.com.cn/i/2011-03-23/11285321288.shtml" ; // 3BD768E58042156E54626860E241E999
       String[] aResult = shortUrl (sLongUrl);
       // 打印出结果

       for ( int i = 0; i < aResult. length ; i++) {
           System. out .println( "[" + i + "]:::" + aResult[i]);
       }
    }
    public static String[] shortUrl(String url) {
       // 可以自定义生成 MD5 加密字符传前的混合 KEY
       String key = "yuanj" ;
       // 要使用生成 URL 的字符
       String[] chars = new String[] { "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" ,
              "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" ,
              "u" , "v" , "w" , "x" , "y" , "z" , "0" , "1" , "2" , "3" , "4" , "5" ,
              "6" , "7" , "8" , "9" , "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" ,
              "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" ,
              "U" , "V" , "W" , "X" , "Y" , "Z"
       };
       // 对传入网址进行 MD5 加密
       String sMD5EncryptResult = ( new CMyEncrypt()).md5(key + url);
       String hex = sMD5EncryptResult;
       String[] resUrl = new String[4];
       for ( int i = 0; i < 4; i++) {
           // 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算
           String sTempSubString = hex.substring(i * 8, i * 8 +;
           // 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用 long ,则会越界
           long lHexLong = 0x3FFFFFFF & Long.parseLong (sTempSubString, 16);
           String outChars = "" ;
           for ( int j = 0; j < 6; j++) {
              // 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引
              long index = 0x0000003D & lHexLong;
              // 把取得的字符相加
              outChars += chars[( int ) index];
              // 每次循环按位右移 5 位
              lHexLong = lHexLong >> 5;
           }
           // 把字符串存入对应索引的输出数组
           resUrl[i] = outChars;
       }
       return resUrl;
    }
}

这里是用MD5生成的短链接然后在配置urlrewrite.xml 跟web.xml同一级路径
urlrewrite.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"  
"http://tuckey.org/res/dtds/urlrewrite2.6.dtd">  
<urlrewrite>
<rule>
<from>^/([a-zA-Z0-9]*)$</from>
<to>/short-link!go.action?key=$1</to>
</rule>
</urlrewrite>
我这里用的是带参数的链接..from代表你生成的url,to带表你要跳转过去的url
form是通过正则表达式来表示..

接下来是web.xml配置
       <filter> 
   <filter-name>UrlRewriteFilter</filter-name> 
   <filter-class> 
       org.tuckey.web.filters.urlrewrite.UrlRewriteFilter 
   </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>UrlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>
web.xml这里几行代码 位置感觉有点点重要..建议放前面点
分享到:
评论

相关推荐

    Struts2整合Freemarker生成静态页面

    Struts2是一个流行的Java web框架,它主要用于构建和维护可扩展且易于管理的企业级Web应用程序。而Freemarker则是一个模板引擎,它允许开发者使用模板语言来动态生成HTML、XML等格式的文档。将Struts2与Freemarker...

    java struts2标签查询...

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用。Struts2标签库是其核心特性之一,极大地简化了视图层的开发,提高了开发效率。在这个主题中,我们将深入探讨Struts2标签及其在实际...

    struts2 json Ajax 整合所需全部jar包.zip

    Struts2是一个强大的MVC(Model-View-Controller)框架,用于组织和管理Java web应用程序的结构。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。...

    struts2整合jasperreport

    Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则是一个强大的报表生成库,可以生成多种格式的报表,如PDF、HTML、Excel等。iReport是JasperReport的可视化设计...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...

    java struts 代码生成器

    这个“Java Struts代码生成器”工具是为了帮助开发者提高开发效率,减少手动编写重复代码的工作量而设计的。通过自动化的代码生成,它可以快速创建出符合Struts框架规范的基础代码结构,包括控制器、模型、视图以及...

    FreeMarker与struts2整合生成静态页面

    FreeMarker与Struts2的整合是Java Web开发中常见的技术组合,主要用于动态生成HTML页面,以提高网站性能和用户体验。FreeMarker是一个模板引擎,而Struts2是一个MVC框架,两者结合可以方便地实现前后端分离,使得...

    struts2整合 jfreechart 实现报表

    总的来说,整合Struts2和JFreeChart能够方便地在Web应用中生成动态图表报表,使数据可视化,提升用户体验。通过以上步骤,你可以创建一个基本的报表系统,根据实际需求,还可以进一步优化,如增加参数化查询、导出...

    struts2与dwr整合实例

    Struts2作为MVC框架,提供了强大的控制层支持,而DWR则允许JavaScript在浏览器端直接调用服务器端的Java方法,实现异步更新和实时交互。 **Struts2框架详解** Struts2是一个基于MVC设计模式的Java Web框架,它继承...

    struts2与jfreechart整合

    Struts2是一个基于MVC设计模式的Web应用框架,用于构建动态、数据驱动的Java Web应用,而JFreeChart则是一个强大的图表生成库,可以生成各种类型的图表,如柱状图、饼图、线图等,广泛应用于数据分析和展示。...

    Birt 与 Struts2 整合

    在IT领域,特别是Java开发中,BIRT(Business Intelligence and Reporting Tools)与Struts2框架的整合是一项重要的技术挑战。BIRT是Eclipse基金会提供的一个开源报表系统,它为Java开发者提供了一套全面的报告设计...

    Struts2_Spring3.1_MyBatis3.06整合需要用到的jar包.rar

    Struts2、Spring3.1和MyBatis3.06是Java开发中常见的三大框架,它们各自在不同的层面上提供了强大的功能,并且可以互相整合,以实现更高效的企业级应用开发。本压缩包提供了整合这三大框架所需的核心库文件,下面将...

    DWR与SPRING,DWR与STRUTS2的整合

    综上所述,"DWR与SPRING,DWR与STRUTS2的整合"主题涵盖了现代Java Web开发中重要的三个方面:DWR的实时通信能力、Spring的全面后端支持和Struts2的MVC架构。通过整合这三者,开发者可以构建出具有高效交互、灵活管理...

    struts2整合jfreechart例子文档

    JFreeChart 是一个强大的 Java 图表库,可以生成高质量的静态图表,而 Struts2 则是用于构建 MVC(模型-视图-控制器)架构的 Web 应用程序框架。以下是如何将 JFreeChart 集成到 Struts2 应用中的详细步骤和关键知识...

    Struts2整合jasperReports报表

    在Struts2中整合jasperReports,可以实现Web应用中的动态报表生成和展示功能。首先,我们需要确保系统环境中已经安装了jasperReports库以及其依赖的iReport设计工具。iReport是用于设计jasperReports报表的图形化...

    struts2所有jar包程序文件

    5. `struts2-convention-plugin.jar`和`struts2-spring-plugin.jar`:分别是约定优于配置插件和Spring集成插件,前者简化了Action配置,后者则帮助将Struts2与Spring容器整合。 6. `struts2-dojo-plugin.jar`和`...

    struts2-生成图片验证码

    通过整合这些组件,开发者可以构建一个完整的Struts2应用程序,其中包含生成和验证图片验证码的功能,从而增强网站的安全性。这个过程涉及到Java编程、Web图像处理、HTTP协议理解以及Struts2框架的深入运用。

    第11章 Struts 2整合JFreeChart开发.ppt

    Struts 2提供了与JFreeChart的整合,使得在Struts 2框架下生成和展示图表变得更加便捷。 **11.1 初涉 JFreeChart** 11.1.1 JFreeChart简介 JFreeChart是一个开源的Java库,设计用于生成高质量的2D图表。它支持...

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...

    struts2+spring+hibernate整合步骤

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC模式中的视图和控制,Spring提供依赖注入和事务管理,而Hibernate则作为ORM(对象关系映射)工具,负责...

Global site tag (gtag.js) - Google Analytics