Java学习【web基础-JSP案列-验证码】

验证码:
为什么使用验证码? 防止机器人恶意注册。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.io.PrintWriter"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="javax.imageio.ImageIO"%>
<%@page import="com.sun.image.codec.jpeg.JPEGCodec"%>
<%@page import="com.sun.image.codec.jpeg.JPEGImageEncoder"%>
<%@page import="java.awt.Graphics"%>
<%@page import="java.awt.Color"%>
<%
    // 强制让out失效!
    out.clearBuffer();
    out = pageContext.pushBody();

    // 告诉浏览器,服务器给你发的是图片,别再查码表去解码了!
    response.setHeader("content-type","image/jpeg");

    // 创建一张在内存中的图片.
    BufferedImage bi = new BufferedImage(100,20,BufferedImage.TYPE_INT_RGB);    
    // 涂鸦
    // 获取画笔
    Graphics g = bi.getGraphics();
    // g.drawString("张三到此一游!",50,50);
    // g.drawRect(10,10,100,100);
    // g.setColor(new Color(255,255,0));
    // g.fillRect(10,30,50,80);
    // g.drawLine(100,60,30,60);
    // g.drawArc(0,0,100,100,0,360);

    String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";


    for(int i=1; i<=4; i++) {
        int idx = (int)(Math.random()*62);
        char c = letters.charAt(idx);
        g.drawString(c+"", i*17,12);
    }

    for(int i = 1; i<=4; i++) {
        // 干扰线
        int x1 = (int)(Math.random()*101);
        int y1 = (int)(Math.random()*21);
        int x2 = (int)(Math.random()*101);
        int y2 = (int)(Math.random()*21);
        g.drawLine(x1,y1,x2,y2);
    }

    // 把图片发送给客户端
    OutputStream os = response.getOutputStream();
    JPEGImageEncoder en =  JPEGCodec.createJPEGEncoder(os);
    en.encode(bi);
%>

在其它jsp页面上使用验证码:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值