JSP中的认证码

来源:互联网 发布:橘子网络电视柠檬tv 编辑:程序博客网 时间:2024/05/16 03:08

package cn.itcast.response;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;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 responseDemo2 extends HttpServlet {private static final int WIDTH = 120;private static final int HEIGHT = 25;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {BufferedImage image = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();//设置背景颜色setBackGroud(g);//设置边框setBord(g);//画随机线setRandomLine(g);//写随机数setRandomNum((Graphics2D)g);//Graphics2D才有旋转函数//写回给浏览器//response.setHeader("content-type", "jpeg");    response.setContentType("image/jpeg");    response.setHeader("Expires", "-1");    response.setHeader("Cache-Control", "no-cache");    response.setHeader("Pragma", "no-cache");ImageIO.write(image, "jpg", response.getOutputStream());}private void setBackGroud(Graphics g) {g.setColor(Color.WHITE);g.fillRect(0, 0, WIDTH, HEIGHT);//填充背景色}private void setBord(Graphics g) {g.setColor(Color.BLUE);g.drawRect(1, 1, WIDTH-2, HEIGHT-2);}private void setRandomLine(Graphics g) {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.setColor(Color.GREEN);g.drawLine(x1, y1, x2, y2);}}private void setRandomNum(Graphics2D g) {g.setColor(Color.RED);g.setFont(new Font("宋体", Font.BOLD, 20));int x=5;String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec";for(int i=0;i<4;i++){String ch = base.charAt(new Random().nextInt(base.length()))+"";int degree = new Random().nextInt()%30;//(-30,30)g.rotate(degree*Math.PI/180, x, 20);g.drawString(ch, x, 20);g.rotate(-degree*Math.PI/180, x, 20);x=x+30;}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}}

HTML代码:

<!DOCTYPE html><html>  <head>    <title>register.html</title>  </head>    <body>   <form action="post">      用户名:<input type="text" name ="username"><br/>      密码:<input type="password" name="password"><br/>      认证码:<input type="text" name="checkcode"><image src="/WebProject1/servlet/responseDemo2"><br/>   <input type="submit" name="提交"></input>      </form>  </body></html>




0 0