importer java.awt.Color ;
importer java.awt.Font ;
importer java.awt.Graphics ;
importer java.awt.Graphics2D ;
importer java.awt.image.BufferedImage ;
importer java.io.IOException ;
importer java.util.Random ;
importer javax.imageio.ImageIO ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
@SuppressWarnings("série")
la classe publique validatePicture étend HttpServlet {
public void doGet (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
essayer {
validateimage (demande, réponse);
} attraper (Exception e) {
e.printStackTrace();
}
}
public void doPost (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
doGet(demande, réponse);
}
public static final int LARGEUR = 120 ;
public static final int HEIGHT = 25 ;
public void validateimage (demande HttpServletRequest,
Réponse HttpServletResponse) lève une exception {
BufferedImage bi = nouveau BufferedImage(LARGEUR, HAUTEUR,
BufferedImage.TYPE_INT_RGB);//
Graphiques g = bi.getGraphics();
setBackGround(g);//
setBorder(g);//
drawRandomLine(g);//
String random = drawRandomNum((Graphics2D) g);//
request.getSession().setAttribute("random", aléatoire);
//request.getSession(false);
réponse.setContentType("image/jpeg");
// 设置不要缓存
réponse.setDateHeader("expries", -1);
réponse.setHeader("Cache-Control", "no-cache");
ImageIO.write(bi, "jpg", réponse.getOutputStream());
}
chaîne privée drawRandomNum (Graphics2D g) {
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD, 20));
// [/u4e00-/u9fa5]中文数字区间
Base de chaîne = "/u4e00/u4f00/u5e00/u4e50/u4e89/u4f10/u4e09" ;
StringBuffer sb = new StringBuffer();
entier x = 5 ;
pour (int je = 0; je < 4; i++) {
int degré = new Random().nextInt() % 30 ;
Chaîne ch = base.charAt(new Random().nextInt(base.length())) + "";
sb.append(ch);
g.rotate(degré * Math.PI / 180, x, 20);
g.drawString(ch, x, 20);
g.rotate(-degré * Math.PI / 180, x, 20);
x = x + 30 ;
}
System.out.println(sb.toString());
return sb.toString();
}
private void drawRandomLine (Graphiques g) {
g.setColor(Color.GREEN);
pour (int je = 0; je < 3; 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 setBorder(Graphiques g) {
g.setColor(Couleur.BLUE);
g.drawRect(1, 1, LARGEUR - 2, HAUTEUR - 2);
}
private void setBackGround (Graphiques g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, LARGEUR, HAUTEUR);
}
}