首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

SpringSide 實戰(五):技術預研——MD5 加密、圖片縮略圖/驗證碼、URL 重寫

     編輯:Java 相關知識

技術預研三大項

項目啟動前,對不熟悉領域進行技術穿刺:優先找成熟開源組件,否則自研輕量方案。本文解決:

  1. 字符串 MD5 加密(密碼存儲)
  2. 圖片縮略圖生成(縮放/裁剪模式)+ 驗證碼生成
  3. URL 重寫(友好 URL:/username 或 username.xkland.com)

1. MD5 加密工具類

JDK MessageDigest 產出 byte[],轉十六進制字符串:

public class StringUtil {
  private static final char[] HEX = '0123456789ABCDEF'.toCharArray();
  public static String toMD5String(String input) {
    if (input == null) throw new NullPointerException();
    MessageDigest md = MessageDigest.getInstance('MD5');
    byte[] bytes = md.digest(input.getBytes());
    char[] out = new char[32];
    for (int i=0; i<bytes.length; i++) {
      out[2*i] = HEX[(bytes[i] & 0xF0) >> 4];
      out[2*i+1] = HEX[bytes[i] & 0x0F];
    }
    return new String(out);
  }
}

測試:abc → 900150983CD24FB0D6963F7D28E17F72。

2. ImageUtil:縮略圖與驗證碼

Spring 管理的 Bean,可配置屬性:

  • sourceDir、destinationDir
  • width、height
  • mode:ScaleOnly(等比縮放)或 ClipAndScale(居中裁剪後縮放,適合列表整齊)
  • characterStorage:驗證碼字符庫

核心邏輯:

  • 讀取 BufferedImage,獲取原寬高
  • ScaleOnly:按長邊縮放比例計算短邊,保持比例
  • ClipAndScale:先按目標比例居中裁剪,再縮放至目標尺寸
  • BMP/GIF 輸出為 PNG(Java 5 ImageIO 不支援寫 GIF,Java 6 已修復)
  • 驗證碼:從字符庫隨機取 4 字符,繪製至 80x20 圖片,加干擾線,存入 Session validateString

Spring 配置:

<bean id="imageUtil" class="com.xkland.util.ImageUtil">
  <property name="sourceDir" value="E:\\"/>
  <property name="destinationDir" value="F:\\"/>
  <property name="width" value="100"/>
  <property name="height" value="100"/>
  <property name="mode" value="ScaleOnly"/>
  <property name="characterStorage" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ北冥有魚..."/>
</bean>

3. URL 重寫:Filter 實現

初嘗 Servlet 映射失敗,後悟:Filter 才是正道(Struts 2.x 亦改用 Filter)。核心邏輯:攔截請求,解析 URL,重寫至內部路徑(如 /index.jsp?username=xxx),轉發。字符串分析替換,靈活可控。

結語

技術穿刺不求大而全,只解當前問題。自研輕量工具類,既避免整合開源組件的繁瑣,又能深化技術內功。會者不難,難者不會——想不到的才做不到。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved