• response生成验证码


    效果如下:

    IdentityServlet.java
    package com.hxxy2003.firstproject;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Random;

    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;

    public class IdentityServlet extends HttpServlet {

    public static final char[] CHARS={'2','3','4','5','6','7','8','9','A','B'
    ,'C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U'
    ,'V','W','X','Y','Z'};

    public static Random random=new Random();
    public static String getRandomString(){
    //字符串缓存
    StringBuffer buffer=new StringBuffer();
    for(int i=0;i<6;i++){
    buffer.append(CHARS[random.nextInt(CHARS.length)]);
    }
    return buffer.toString();
    }

    public static Color getRandomColor(){
    return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
    }

    public static Color getReverseColor(Color c){
    return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue());
    }
    /**
    * Constructor of the object.
    */
    public IdentityServlet() {
    super();
    }


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

    response.setContentType("image/jpeg");
    String randomString=getRandomString();//随机字符串
    request.getSession(true).setAttribute("randomString", randomString);
    int width=100;
    int height=30;

    Color color=getRandomColor();
    Color reverse=getReverseColor(color);

    BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D g=bi.createGraphics();
    g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
    g.setColor(color);
    g.fillRect(0, 0, width, height);
    g.setColor(reverse);
    g.drawString(randomString, 18, 20);
    for(int i=0,n=random.nextInt(100);i<n;i++){
    g.drawRect(random.nextInt(width), random.nextInt(height), 1, 1);
    }

    ServletOutputStream out=response.getOutputStream();
    JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
    encoder.encode(bi);
    out.flush();


    }



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

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println(" <BODY>");
    out.print(" This is ");
    out.print(this.getClass());
    out.println(", using the POST method");
    out.println(" </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
    }




    }


    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>

    <title>My JSP 'index.jsp' starting page</title>


    </head>
    <script>
    function reloadImage(){
    document.getElementById(
    'btn').disabled=true;
    document.getElementById(
    'identity').src='servlet/IdentityServlet?ts='
    +new Date().getTime();
    }
    </script>

    <body>
    <img src="servlet/IdentityServlet" id="identity" onload="btn.disabled=false;" />
    <input type="button" value="换个图片" onclick="reloadImage()" id="btn">
    </body>
    </html>



  • 相关阅读:
    【NOIP模拟赛】正方形大阵
    【优化王牌】二分查找
    【Ah20160703】咏叹 By C_SUNSHINE
    【NOIP模拟赛】lover——心上人
    【小奇模拟赛】小奇挖矿2
    【NOIP模拟赛】工资
    关于博客装修的说明
    【快速处理】分块算法
    【集训】 考试笔记
    【HDNOIP】HD201404最短路径
  • 原文地址:https://www.cnblogs.com/hxxy2003/p/2284983.html
Copyright © 2020-2023  润新知