将学习成果,分享给大家,也便于自己温习学过的知识。

import javax.imageio.ImageIO; 

 import javax.servlet.ServletException; 

 import javax.servlet.http.HttpServlet; 

 import javax.servlet.http.HttpServletRequest; 

 import javax.servlet.http.HttpServletResponse; 



 public class RandImgResponse extends HttpServlet 

 { 

private static final int WIDTH = 120; 

private static final int HEIGHT = 35; 
  

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

{ 

BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); 

 

Graphics g = image.getGraphics(); 

 

//1.设置背景色 

setBackGround(g); 

//2.设置边框 

setBorder(g); 

//3.换干扰线 

drawNumLine(g); 

//写随机数 

drawRandomNum((Graphics2D)g); 

//5.图形写给浏览器 

response.setContentType("image/jpeg"); 

response.setDateHeader("expires", -1); 

response.setHeader("Pragma", "no-cache"); 

response.setHeader("Cache-Control", "no-cache"); 

ImageIO.write(image, "jpg",response.getOutputStream()); 

 

} 



private void drawNumLine(Graphics g) 

{ 

g.setColor(Color.GREEN); 

for (int i = 0; i < 5; i++) 

{ 

int x1 = new Random().nextInt(WIDTH); 

int y1 = new Random().nextInt(HEIGHT); 

 

int x2 = new Random().nextInt(WIDTH); 

int y2 = new Random().nextInt(HEIGHT); 

 

g.drawLine(x1, y1, x2, y2); 

} 
  

} 



private void drawRandomNum(Graphics2D g) 

{ 

String st = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY12345678790"; 

g.setColor(Color.RED); 

g.setFont(new Font("宋体", Font.BOLD, 20)); 

 

int x = 10; 

for (int i = 0; i < 4; i++) 

{ 

int degree = new Random().nextInt()%30;//-30---30 

String ch = st.charAt(new Random().nextInt(st.length()))+""; 

g.rotate(degree*Math.PI/180, x, 20); 

g.drawString(ch, x, 20); 

 

g.rotate(-degree*Math.PI/180, x, 20); 

x += 30; 

} 

} 



private void setBorder(Graphics g) 

{ 

 

g.setColor(Color.BLUE); 

g.drawRect(1, 1, WIDTH-2, HEIGHT-2); 

 

} 

private void setBackGround(Graphics g) 

{ 

g.setColor(Color.WHITE); 

g.drawRect(0, 0, WIDTH, HEIGHT); 

} 



public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

{ 



this.doGet(request, response); 

} 



 }