response-实现验证码
2015-12-30 23:45
411 查看
public static final int WIDTH =120; public static final int HEIGHT= 25; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //1.设置背景色 setBackGround(g); //2.设置边框 setBorder(g); //3.画干扰线 drawRandomLine(g); //4.写随机数 drawRandomNum((Graphics2D)g); //5.写给浏览器 response.setContentType("image/jpeg"); //发头控制浏览器不要缓存 response.setDateHeader("expries",-1); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); ImageIO.write(image, "jpg", response.getOutputStream()); } private void drawRandomNum(Graphics2D g) { g.setColor(Color.RED); g.setFont(new Font("宋体",Font.BOLD,20)); String base = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a"; //{\u4e00-\u9fa5} int x=5; for (int i = 0; i < 4; i++) { int degree = new Random().nextInt()%30; String ch =base.charAt(new Random().nextInt(base.length()))+""; g.rotate(degree*Math.PI/180,x,20);//设置旋转角度 g.drawString(ch, x, 20); g.rotate(-degree*Math.PI/180,x,20); x+=30; } } private void drawRandomLine(Graphics g) { g.setColor(Color.GREEN); 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.BLUE); g.drawRect(1, 1, WIDTH-2,HEIGHT-2); } private void setBackGround(Graphics g) { g.setColor(Color.WHITE); g.fillRect(0, 0, WIDTH, HEIGHT); }
相关文章推荐
- 测试 __try, __finally, __except
- 蓝懿IOS打飞机游戏练习
- Flask Web开发背景介绍及环境配置
- 闪存浪潮下不得不知的知识(2)-颗粒篇
- Random Walk for Image Segmentation 论文笔记
- android之旅16 自定义广播与无序有序广播
- 闪存浪潮下不得不知的知识(2)-颗粒篇
- jsonp解决CORS问题
- 装饰者模式
- NSMutableString 使用
- 自定义shape
- 链表之单链表约瑟夫问题(一)
- ajax提交json数据,后台解析问题
- Caffe + Ubuntu 14.04 64bit + CUDA6.5 + 无GPU 配置
- Fragment android碎片化管理
- 设计模式六大原则
- linux实战案例作业(1)
- JQuery以JSON方式提交数据到服务端
- 使用运行时函数实现方法交换
- 记住:用户不是傻*,她是你的老婆大人