Struts2利用IO流製作簡單驗證碼

利用Struts2製作簡單驗證碼:

1、Struts.xml配置:

<struts>


<package name="default" extends="struts-default" namespace="/">
 
  <action name="hello" class="com.strus1.Hello">
  <result name="success" > /index.jsp</result>
  </action>
 
  <!-- 驗證碼 -->
  <action name="YzmAction" class="com.strus1.YzmAction">
  <result name="ok" type="stream">
 
  <param name="inputName">inputStream</param>
  <!--傳輸類型-->
  <param name="contentType">${contentType}</param>
   
  </result>
 
  </action>
   
  </package>

</struts>   

2、代碼如下:

package com.strus1;


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;


import javax.imageio.ImageIO;


public class YzmAction {


 


public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
private InputStream inputStream;
private String contentType;
private int contentLength;
public String execute() throws IOException{
//設置傳輸類型
contentType="image/jpeg";

//創建bufferedimage
BufferedImage bufferedImg=new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB);
//創建畫筆
Graphics2D g= (Graphics2D) bufferedImg.getGraphics();
//g.setBackground(Color.WHITE);
Random random=new Random();
//隨機畫幾個數字
for (int i = 0; i < 4; i++) {

g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
g.setFont(new Font("", Font.BOLD, 50));
g.drawString(random.nextInt(10)+"",i*50+10, 80);
}

ByteArrayOutputStream byteArrayOut=new ByteArrayOutputStream();

//把畫好的bufferedImg 包裝一下,寫到byteArrayOut裏面去
ImageIO.write(bufferedImg, "jpeg", byteArrayOut);
//contentLength=byteArrayOut.toByteArray().length;
  inputStream=new ByteArrayInputStream(byteArrayOut.toByteArray());
return "ok";
}
}

3、效果圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章