随机生成图片验证码
来源:互联网 发布:夏达姚非拉事件 知乎 编辑:程序博客网 时间:2024/06/05 17:37
在做项目的时候,我们经常也会用到随机数验证码,下面带大家一起实现验证码的绘制实现过程:
import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.io.OutputStream;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class codeServlet */@WebServlet("/code")public class CodeServlet extends HttpServlet {//1.指定画板的长宽(即:验证码所在位置的大小)private int width=80;private int height=30;private static final long serialVersionUID = 1L; public CodeServlet() { super(); // TODO Auto-generated constructor stub }protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//2.准备画板BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//3.准备画笔Graphics g=image.getGraphics();//4.给画笔上色Random ran=new Random();g.setColor(new Color(ran.nextInt(255), ran.nextInt(255), ran.nextInt(255)));//5.给画板设置背景颜色g.fillRect(0, 0, width, height);//6.获取随机的字符串String number=getNumber(4,ran);//7.将产生的Number存入session中HttpSession session=request.getSession();session.setAttribute("number", number);//8.绘制字符串//先转换画笔的颜色g.setColor(new Color(0,0,0));g.setFont(new Font(null, Font.ITALIC, 24));g.drawString(number, 5, 25);//9.绘制干扰线for (int i = 0; i < 8; i++) {g.setColor(new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));g.drawLine(ran.nextInt(width), ran.nextInt(height), ran.nextInt(width), ran.nextInt(height));}//10.压缩图片并输出到客户端response.setContentType("image/jpeg");OutputStream output=response.getOutputStream();ImageIO.write(image, "jpeg", output);output.close();}//获取随机字符串private String getNumber(int n, Random ran) {String number="";String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890qwertyuiopasdfghjklzxcvbnm";for(int i=0;i<n;i++){number+=str.charAt(ran.nextInt(str.length()));}return number;}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
我们使用的时候只需要调用对应的URL路径就能够实现。
阅读全文
0 0
- 随机生成图片验证码
- 随机生成图片验证码
- 随机生成图片验证码
- 生成随机验证码图片
- 生成随机图片验证码
- 随机生成图片验证码
- 随机生成图片验证码
- 生成随机图片验证码
- 随机生成图片验证码
- 生成随机验证码图片
- 随机生成图片验证码
- jsp随机验证码图片生成
- jsp生成随机验证码图片
- ASP.NET随机生成验证码图片
- 随机生成一个验证码图片
- Java随机生成验证码图片
- 生成随机数字的图片验证码
- JAVA生成随机验证码图片
- java8内置四大函数
- 机器学习sklearn—数据的特征预处理
- 搭建solr环境
- BIRCH算法
- python-数据处理-删除dataframe中的列
- 随机生成图片验证码
- CALayer3-层的属性
- 数据
- JS调用google DEMO朗读
- command not found
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛
- else语句和with语句有关
- CentOS7中启动/停止/重启服务命令
- Android 属性动画 常用方法 与 插值器 Interpolator