【JAVA】纯JSP实现验证码效果

yanzhengma.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.io.FileInputStream" %>
<%@ page import="java.awt.Color" %>
<%@ page import="java.awt.Font" %>
<%@ page import="java.awt.Graphics" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.util.Random" %>
<%@ page import="javax.imageio.ImageIO" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
<%@ page import="java.io.OutputStream" %> 
<%@ page import="java.util.Random" %> 
<%
    int width = 66;//图片宽
    int height = 22;//图片高
    int lineSize = 0;//干扰线数量
    int stringNum = 4;//随机产生字符数量
    BufferedImage img = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
// 得到该图片的绘图对象  
Graphics g = img.getGraphics();
Random r = new Random();
Color c = new Color(200, 200, 200);
g.setColor(c);
// 填充整个图片的颜色  
g.fillRect(0, 0, width, height);
// 向图片中输出数字和字母  
StringBuffer sb = new StringBuffer();
char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
int index, len = ch.length;
for (int i = 0; i < stringNum; i++) {
index = r.nextInt(len);
g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
// 输出的  字体和大小  
g.setFont(new Font("Arial", Font.ITALIC, 18));         
//绘制干扰线
        for(int a=0;a<lineSize;a++){
            int x = r.nextInt(width);
        int y = r.nextInt(height);
        int xl = r.nextInt(13);
        int yl = r.nextInt(15);
        g.drawLine(x, y, x+xl, y+yl);
        }
//写什么数字,在图片 的什么位置画  
g.drawString("" + ch[index], (i * 15) + 3, 18);
sb.append(ch[index]);
}
OutputStream os=response.getOutputStream();  
out.println(ImageIO.write(img, "JPEG", os));
os.close();
os.flush();
response.flushBuffer();  
out.clear();  
out = pageContext.pushBody(); 
  System.out.println(sb.toString());
request.getSession().setAttribute("piccode", sb.toString());
%>

html代码

<img src="yanzhengma.jsp" />

复制就直接可以用了,剩下的自由发挥。

文章版权归haiqiancun.com所有



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值