主要代码

public class Abc extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public Color getRandomColor(int fc,int bc){ Random random = new Random(); Color randomColor = null; if(fc>255) fc=255; if(bc>255) bc=255; //设置个0-255之间的随机颜色值 int r=fc+random.nextInt(bc-fc); int g=fc+random.nextInt(bc-fc); int b=fc+random.nextInt(bc-fc); randomColor = new Color(r,g,b); return randomColor;//返回具有指定红色、绿色和蓝色值的不透明的 sRGB 颜色 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //禁止页面缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); //设置响应正文的MIME类型为图片 int width=60, height=20; /**创建一个位于缓存中的图像,宽度60,高度20 */ BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); //获取用于处理图形上下文的对象,相当于画笔 Random random = new Random(); //创建生成随机数的对象 g.setColor(getRandomColor(200,250)); //设置图像的背景色 g.fillRect(0, 0, width, height); //画一个矩形 ,坐标(0,0),宽度60,高度20 g.setFont(new Font("Times New Roman",Font.PLAIN,18)); //设定字体格式 g.setColor(getRandomColor(160,200)); for(int i=0;i<130;i++){ //产生130条随机干扰线 int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); //在图象的坐标(x,y)和坐标(x+x1,y+y1)之间画干扰线 } String strCode=""; for (int i=0;i<4;i++){ String strNumber=String.valueOf(random.nextInt(10)); //把随机数转换成String字符串 strCode=strCode+strNumber; //设置字体的颜色 g.setColor(new Color(15+random.nextInt(120),15+random.nextInt(120),15+random.nextInt(120))); g.drawString(strNumber,13*i+6,16); //将验证码依次画到图像上,坐标(x=13*i+6,y=16) } request.getSession().setAttribute("Code",strCode); //把验证码保存到Session中 g.dispose(); //释放此图像的上下文以及它使用的所有系统资源 ImageIO.write(image, "JPEG", response.getOutputStream()); //输出JPEG格式的图像 response.getOutputStream().flush(); //刷新输出流 response.getOutputStream().close(); //关闭输出流 } }

转载于:https://www.cnblogs.com/JPAORM/archive/2012/05/09/2509840.html

Servlet生成动态验证码相关推荐

  1. 利用Servlet生成动态验证码

    在Servlet中,设置响应正文的类型为image/jpeg,表示响应的是一个图片,然后通过java.awt包中的操作图形图像的类来生成一个图像 java.awt.image.BufferedImag ...

  2. 登陆界面如何生成动态验证码

    在设计登录界面时验证码是必不可少,本实例将简单的生成动态验证码. 根据个人需求将生成验证码代码放到不同的的地方,可以放到前段控制器中通过请求方式生成验证码,也可已将代码放到一个JSP页面通过应用JSP ...

  3. phpgif图片包_php生成动态验证码gif图片

    这是一个通过php生成的动态验证码图片的示例,重点是可以运行哦!下面先发下效果图: 下面是php生成动态验证码需要用到的相关类和函数. /** *ImageCode 生成包含验证码的GIF图片的函数 ...

  4. .NET中生成动态验证码

    NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到防 ...

  5. 生成动态验证码的jsp

    直接将验证码的生成工作放到jsp中,就可以直接在页面请求这个jsp,不需要再去设置servlet的的映射路径,简化代码. <%@ page language="java" p ...

  6. 利用 PIL模块实现生成动态验证码

    简单说下需求: 当用户点击动态框时,实现实时更换动态库里的数字更换 模块: PIL  io 前端页面: <img src="/get_code/" alt="&qu ...

  7. servlet生成网站验证码

    Servlet 最近在学习Servlet,以我的理解:servlet就是运行在服务器端的一个程序,在需要时(如客户端输入某个url时),web容器自动调用某个servlet实现某个功能.我用Servl ...

  8. java生成动态验证码_动态生成验证码案例

    servlet代码 package cn.guizimo.web.servlet; import javax.imageio.ImageIO; import javax.servlet.Servlet ...

  9. java生成动态验证码_java动态生成验证码

    后台代码:RandomImageServlet.java package com.zhaoran.servlet; import java.awt.Color; import java.awt.Fon ...

最新文章

  1. list和map用法java,java 集合list和map的用法
  2. BitMap算法应用:Redis队列滤重优化
  3. 在html中取消或加上超链接的下划线
  4. 工作中用到的安卓日志相关命令(logcat)
  5. redis搭建集群(非主从)版本5.0
  6. 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题
  7. IDEA中项目引入独立包打包失败问题解决(找不到包)
  8. 远程控制软件用户群分析
  9. Spark大数据计算框架知识总结
  10. Codeforces Round #253 DIV1 C 馋
  11. 成人高考计算机专业怎么样,成人高考计算机专业就业前景怎么样?
  12. 实战一:输出“王者荣耀”的游戏角色
  13. 二分以及编程过程中求中点各种写法思想解析以及完美写法
  14. php判断用户是微信浏览器还是其他浏览器,PHP区分企业微信浏览器|普通微信浏览器|其他浏览器...
  15. 艾滋hiv最新研究进展(2022年4月)
  16. python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
  17. 光标快速移动到文档尾部_把光标移动到文件尾部的快捷键是什么呢?
  18. Macbook Pro 201 装Win10 声卡_MacBook+BMPCC+康佳PS300共同打造事半功倍视频制作流
  19. iOS 实现直接跳转打开定位
  20. 普通人如何在网上能月入3000以上

热门文章

  1. java,二分查找法,网上查阅
  2. 修改Chrome浏览器默认背景颜色为浅绿色(转)
  3. JBoss3.0 下配置和部署EJB简介
  4. my log4crc
  5. .NET Winform 的七段数码显示控件
  6. xml 导入SQL Server 2005
  7. 别再用代码开发了,整理了30套实用可视化大屏模板,无套路直接领
  8. (干货分享)农商行中商业智能建设的整体思路与架构
  9. 大数据和BI商业智能有何区别?有何相关?
  10. 三目运算符c语言吗,看看三目运算符?:到底是怎么回事