一个自制的Servlet生成图片验证码的示例
2018-03-07 19:00
246 查看
package com.maker.servlet; 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 java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; @WebServlet(name = "VerificationCode") public class VerificationCode extends HttpServlet { private static int WIDTH=150; private static int HEIGHT=50; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BufferedImage bi=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB); Graphics2D g=bi.createGraphics(); //1设置背景色 setBackground(g); //2设置边框 setBorder(g); //3设置干扰线 setLines(g); //4设置文字 setFonts(g); //5输出到浏览器 response.setContentType("image/jpeg"); //6控制浏览器不要缓存 ImageIO.write(bi,"jpg",response.getOutputStream()); response.setDateHeader("expries",-1); response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache"); } private void setFonts(Graphics2D g) { String upperLetters[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; String lowerLetters[]=new String[26]; for(int i1=0;i1<upperLetters.length;i1++){ lowerLetters[i1]=upperLetters[i1].toLowerCase(); } String letters[]=new String[52]; for(int i2=0;i2<letters.length;i2++){ if(i2<26){ letters[i2]=upperLetters[i2]; }else{ letters[i2]=lowerLetters[i2-26]; } } int distanceX=10; for(int i3=0;i3<4;i3++){ int degree=new Random().nextInt()%30; g.setColor(Color.RED); g.setFont(new Font("宋体",Font.BOLD,30)); g.rotate(degree*Math.PI/180,distanceX,35); g.drawString(letters[new Random().nextInt(52)],distanceX,35); g.rotate(-degree*Math.PI/180,distanceX,35); distanceX=distanceX+40; } } private void setLines(Graphics g) { g.setColor(Color.GREEN); for(int i=0;i<5;i++){ g.drawLine(new Random().nextInt(WIDTH),new Random().nextInt(HEIGHT),new Random().nextInt(WIDTH),new Random().nextInt(HEIGHT)); } } private void setBorder(Graphics g) { g.setColor(Color.BLACK); g.drawRect(0,0,WIDTH-1,HEIGHT-1); } private void setBackground(Graphics g) { g.setColor(Color.WHITE); g.fillRect(0,0,WIDTH,HEIGHT); } }
相关文章推荐
- 示例:由线段生成一个环,由环构成一个多边形(可以包含多个环的多边形集)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- Java Web:使用Servlet生成网页随机图片验证码
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- Angular4自制一个市县二级联动组件示例
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- 使用 Servlet 生成图片验证码
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- servlet中用ZXing生成条码二维码并输出到web页面的示例
- jsp生成xml文件示例-JSP教程,Jsp/Servlet
- 一个生成验证字符或数字的增强类(downmoon)(基于.net1.1)及调用示例
- JSP + Servlet实现生成登录验证码示例
- POI生成Excel并通过Servlet下载示例
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- Java Web项目--使用Servlet生成一个页面
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- Unity3D技术之用程序生成网格几何体-示例–创建一个广告牌
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)