private ByteArrayInputStream inputstream;
//聲明這個變量
Action中:
/**生成驗證碼流*/
this.setInputstream(maker.MakeImag());
//使用上面變量的set方法,放入壹個圖片的流,然後就可以return了
result的類型為 "stream"
result中加入幾個參數:
"contentType"-----"image/jpeg" //這裏看妳生成什麽類型的圖片
"inputName"------"inputstream" //這裏是妳的變量的名字
(上面的contentType和inputName是不能改的)
頁面端:
<img src="妳的Action地址寫在這裏">
當頁面加載的時候就會自動讀取圖片了
圖片生成方法:
public ByteArrayInputStream MakeImag(){
/**繪制驗證碼圖像*/
BufferedImage image = new BufferedImage(40,25,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.GRAY);
g.fillRect(0, 0, 50, 25);
Random rand = new Random();
StringBuffer code = new StringBuffer();
for(int i = 0;i<4;i++){
/**十六進制代碼4位*/
code.append(Integer.toHexString(rand.nextInt(15)));
}
this.validateString = code.toString();
g.setColor(Color.BLACK);
g.drawString(validateString, 10, 20);
/**驗證碼轉換成圖像流*/
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageOutputStream imageOut = null;
try {
imageOut = ImageIO.createImageOutputStream(output);
ImageIO.write(image, "JPEG", imageOut);
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(imageOut!=null){
imageOut.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return (ByteArrayInputStream)(new ByteArrayInputStream(output.toByteArray()));
}
這個是十六進制驗證碼的生成方式