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是一个流行的Java web框架,它主要用于构建和维护可扩展且易于管理的企业级Web应用程序。而Freemarker则是一个模板引擎,它允许开发者使用模板语言来动态生成HTML、XML等格式的文档。将Struts2与Freemarker...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用。Struts2标签库是其核心特性之一,极大地简化了视图层的开发,提高了开发效率。在这个主题中,我们将深入探讨Struts2标签及其在实际...
Struts2是一个强大的MVC(Model-View-Controller)框架,用于组织和管理Java web应用程序的结构。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。...
Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则是一个强大的报表生成库,可以生成多种格式的报表,如PDF、HTML、Excel等。iReport是JasperReport的可视化设计...
Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...
这个“Java Struts代码生成器”工具是为了帮助开发者提高开发效率,减少手动编写重复代码的工作量而设计的。通过自动化的代码生成,它可以快速创建出符合Struts框架规范的基础代码结构,包括控制器、模型、视图以及...
FreeMarker与Struts2的整合是Java Web开发中常见的技术组合,主要用于动态生成HTML页面,以提高网站性能和用户体验。FreeMarker是一个模板引擎,而Struts2是一个MVC框架,两者结合可以方便地实现前后端分离,使得...
总的来说,整合Struts2和JFreeChart能够方便地在Web应用中生成动态图表报表,使数据可视化,提升用户体验。通过以上步骤,你可以创建一个基本的报表系统,根据实际需求,还可以进一步优化,如增加参数化查询、导出...
Struts2作为MVC框架,提供了强大的控制层支持,而DWR则允许JavaScript在浏览器端直接调用服务器端的Java方法,实现异步更新和实时交互。 **Struts2框架详解** Struts2是一个基于MVC设计模式的Java Web框架,它继承...
Struts2是一个基于MVC设计模式的Web应用框架,用于构建动态、数据驱动的Java Web应用,而JFreeChart则是一个强大的图表生成库,可以生成各种类型的图表,如柱状图、饼图、线图等,广泛应用于数据分析和展示。...
在IT领域,特别是Java开发中,BIRT(Business Intelligence and Reporting Tools)与Struts2框架的整合是一项重要的技术挑战。BIRT是Eclipse基金会提供的一个开源报表系统,它为Java开发者提供了一套全面的报告设计...
Struts2、Spring3.1和MyBatis3.06是Java开发中常见的三大框架,它们各自在不同的层面上提供了强大的功能,并且可以互相整合,以实现更高效的企业级应用开发。本压缩包提供了整合这三大框架所需的核心库文件,下面将...
综上所述,"DWR与SPRING,DWR与STRUTS2的整合"主题涵盖了现代Java Web开发中重要的三个方面:DWR的实时通信能力、Spring的全面后端支持和Struts2的MVC架构。通过整合这三者,开发者可以构建出具有高效交互、灵活管理...
JFreeChart 是一个强大的 Java 图表库,可以生成高质量的静态图表,而 Struts2 则是用于构建 MVC(模型-视图-控制器)架构的 Web 应用程序框架。以下是如何将 JFreeChart 集成到 Struts2 应用中的详细步骤和关键知识...
在Struts2中整合jasperReports,可以实现Web应用中的动态报表生成和展示功能。首先,我们需要确保系统环境中已经安装了jasperReports库以及其依赖的iReport设计工具。iReport是用于设计jasperReports报表的图形化...
5. `struts2-convention-plugin.jar`和`struts2-spring-plugin.jar`:分别是约定优于配置插件和Spring集成插件,前者简化了Action配置,后者则帮助将Struts2与Spring容器整合。 6. `struts2-dojo-plugin.jar`和`...
通过整合这些组件,开发者可以构建一个完整的Struts2应用程序,其中包含生成和验证图片验证码的功能,从而增强网站的安全性。这个过程涉及到Java编程、Web图像处理、HTTP协议理解以及Struts2框架的深入运用。
Struts 2提供了与JFreeChart的整合,使得在Struts 2框架下生成和展示图表变得更加便捷。 **11.1 初涉 JFreeChart** 11.1.1 JFreeChart简介 JFreeChart是一个开源的Java库,设计用于生成高质量的2D图表。它支持...
在Struts2框架中整合Ajax以实现异步数据交互,JSON(JavaScript Object Notation)扮演了关键角色。JSON是一种轻量级的数据交换格式,它允许Web应用与服务器之间高效地传输数据,而无需进行繁琐的HTTP请求。在这个...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC模式中的视图和控制,Spring提供依赖注入和事务管理,而Hibernate则作为ORM(对象关系映射)工具,负责...