jsp之简单的验证码生成
2017-07-02 10:43
357 查看
<%@page import="java.awt.image.ImageObserver"%> <%@page import="java.awt.Image"%> <%@page import="java.awt.Toolkit"%> <%@page import="java.awt.Font"%> <%@page import="java.util.Random"%> <%@page import="javax.imageio.ImageIO"%> <%@page import="java.awt.Color"%> <%@page import="java.awt.Graphics"%> <%@page import="java.awt.image.BufferedImage"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%!private Random rnd = new Random();%> <% //设置图片格式 response.setContentType("image/png"); //内存图片 BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB); //获取画笔 Graphics g = bi.getGraphics(); //绘制图片 //获取工程所在的根目录 String fileName = application.getRealPath("xx.png"); System.out.println(fileName); Image img = Toolkit.getDefaultToolkit().getImage(fileName); g.drawImage(img, 0, 0, 200, 200, null); //绘图图案 g.setColor(Color.WHITE);//将画笔设置成白色 //g.fillRect(0, 0, 200, 200);//画填充矩形 g.setColor(Color.BLACK); g.drawRect(1, 1, 198, 198);//画轮廓矩形 //干扰线 int lines = 100; g.setColor(Color.GRAY); for (int i = 0; i < lines; i++) { int x1 = rnd.nextInt(201); int x2 = rnd.nextInt(201); int y1 = rnd.nextInt(201); int y2 = rnd.nextInt(201); g.drawLine(x1, y1, x2, y2); } //生成随机数 String x = ""; for (int i = 0; i < 6; i++) { x += rnd.nextInt(10); } System.out.print(x); g.setColor(Color.RED); g.setFont(new Font("黑体", Font.PLAIN, 40)); g.drawString(x, 30, 100);//画文字 //将图片输出到浏览器 ImageIO.write(bi, "png", response.getOutputStream()); //释放资源 g.dispose(); out.clear(); out = pageContext.pushBody(); %>
点击图片刷新验证码
<img width="100px" alt="验证码" src="img.jsp" onclick="this.src='img.jsp?ran='+Math.random();">
相关文章推荐