古詩詞大全網 - 成語解釋 - struts2 顯示圖片

struts2 顯示圖片

/** 驗證碼圖片流 */

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()));

}

這個是十六進制驗證碼的生成方式