Servlet 获取的随机图片验证码制作
2017-12-27 10:43
483 查看
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 获取随机验证码(图片),防止恶意访问 * @author lu * @version 1.0 */ public class ImageServlet extends HttpServlet { private static final long serialVersionUID = 4172288020211199830L; public static final int WIDTH = 190; public static final int HEIGHT = 50; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpeg"); BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB); Graphics g= image.getGraphics(); setBackGroud(g); setBorder(g); drawRandomLine(g); String random=drawRandomNum((Graphics2D)g); request.getSession().setAttribute("checkCode",random); //控制浏览器不缓存验证码 response.setDateHeader("expries",-1); response.setHeader("Cache-Control","no-cache"); response.setHeader("Prama","no-cache"); ImageIO.write(image,"jpg", response.getOutputStream()); } //设置随机字符 private String drawRandomNum(Graphics2D g) { g.setColor(Color.WHITE); g.setFont(new Font("楷体",Font.BOLD,30)); String base="\u7684\u4e00\u4e86\u662f\u66211\u4e0d\u5728\u4eba\u4eec\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u41fa" + "\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762"; StringBuffer sb = new StringBuffer(); int x=20; for(int i=0;i<=3;i++) { int degree = new Random().nextInt()%30; String ch = base.charAt(new Random().nextInt(base.length()))+""; sb.append(ch); g.rotate(degree*Math.PI/180,x,35); g.drawString(ch,x,35); g.rotate(-degree*Math.PI/180,x,35); x+=40; } return sb.toString(); } //设置干扰线 private void drawRandomLine(Graphics g) { g.setColor(Color.WHITE); for(int i=0;i<5;i++) { int x1=new Random().nextInt(WIDTH); int y1=new Random().nextInt(HEIGHT); int x2=new Random().nextInt(WIDTH); int y2=new Random().nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } } //设置背景 private void setBorder(Graphics g) { g.setColor(Color.BLACK); g.fillRect(2, 2, WIDTH-4, HEIGHT-4); } //设置边框 private void setBackGroud(Graphics g) { g.setColor(Color.GRAY); g.fillRect(0, 0, WIDTH, HEIGHT); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
相关文章推荐
- JSP随机验证图片如何制作
- Servlet随机生成验证图片
- java(15)--Servlet生成随机验证图片
- Servlet实现页面验证功能随机生成图片
- servlet生成随机图片验证码
- 随机图片验证码的制作
- 使用Http协议获取网络图片,采用servlet输出
- servlet 获取客户端传过来图片并保存到本地
- 产生随机验证图片代码来自CNBlogsDottext10Beta2
- 使用Java通过Servlet生成图片验证码
- 刷新一次变一次的图片代码-PHP随机显示图片代码:可制作头像或签名
- 随机图片验证码的制作
- 使用JavaScript实现制作网页随机验证码
- 《J2EE学习笔记》之基于Servlet的图片验证码
- 【Java】使用Servlet生成随机验证码图片
- javawebday17(图片验证 Servlet简介)
- java生成随机验证图片的实现
- JSP+Servlet实现图片验证码
- C#生成随机验证图片