zoukankan      html  css  js  c++  java
  • java servlet编写验证码

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Random;
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class ValidateCode
     */
    @WebServlet("/ValidateCode")
    public class ValidateCode extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ValidateCode() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            // 设置页面不缓存
              response.setHeader("Pragma", "No-cache");
              response.setHeader("Cache-Control", "no-cache");
              response.setDateHeader("Expires", 0);
              // 设置图片的长宽
              int width = 62, height = 22;
              // ////// 创建内存图像
              BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);
              // 获取图形上下文
              Graphics g = image.createGraphics();
              // 设定图像背景色(因为是做背景,所以偏淡)
              g.setColor(getRandColor(180, 250));
              g.fillRect(0, 0, width, height);
              // 设置字体
              g.setFont(new Font("Times New Roman", Font.PLAIN, 17));
              // /////设置默认生成4个验证码
              int length = 4;
              java.util.Random rand = new Random(); // 设置随机种子
              /*
               * if (request.getParameter("length") != null) { try { length =
               * Integer.parseInt(request.getParameter("length")); }catch
               * (NumberFormatException e) {} }
               */
              // 设置备选验证码:包括"a-z"和数字"0-9"
              String base = "abcdefghijklmnopqrstuvwxyz0123456789";
              int size = base.length();
              StringBuffer str = new StringBuffer();
              for (int i = 0; i < length; i++) {
               int start = rand.nextInt(size);
               String tmpStr = base.substring(start, start + 1);
               str.append(tmpStr);
               // 生成随机颜色(因为是做前景,所以偏深)
               g.setColor(getRandColor(10, 150));
               // 将此字画到图片上
               // g.drawString(str.toString(), 4, 17);
               g.drawString(tmpStr, 13 * i + 6 + rand.nextInt(5), 14 + rand
                 .nextInt(6));
              }
              // 将认证码存入session
              request.getSession().setAttribute("valiCode", str.toString());
              // 图象生效
              g.dispose();
              // 输出图象到页面
              ImageIO.write(image, "JPEG", response.getOutputStream());
             }
             public void doPost(HttpServletRequest request, HttpServletResponse response)
               throws ServletException, IOException {
              this.doGet(request, response);
             }
             // 给定范围获得一个随机颜色
             Color getRandColor(int fc, int bc) {
              Random random = new Random();
              if (fc > 255)
               fc = 255;
              if (bc > 255)
               bc = 255;
              int r = fc + random.nextInt(bc - fc);
              int g = fc + random.nextInt(bc - fc);
              int b = fc + random.nextInt(bc - fc);
              return new Color(r, g, b);
             }
            }
  • 相关阅读:
    jquery 插件扩展2
    jquery 插件扩展
    call apply bind
    bom object
    js oop 封装
    js oop 继承
    js页面之间传参2
    js弹出新窗口的6中方法
    display Tag
    js中extends方法
  • 原文地址:https://www.cnblogs.com/Jansens520/p/7860075.html
Copyright © 2011-2022 走看看