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

来源:互联网 发布:开源房产cms 编辑:程序博客网 时间:2024/06/06 04:11

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

<%@ 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页面上使用验证码:
这里写图片描述

原创粉丝点击