Servlet生成动态验证码
主要代码
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生成动态验证码相关推荐
- 利用Servlet生成动态验证码
在Servlet中,设置响应正文的类型为image/jpeg,表示响应的是一个图片,然后通过java.awt包中的操作图形图像的类来生成一个图像 java.awt.image.BufferedImag ...
- 登陆界面如何生成动态验证码
在设计登录界面时验证码是必不可少,本实例将简单的生成动态验证码. 根据个人需求将生成验证码代码放到不同的的地方,可以放到前段控制器中通过请求方式生成验证码,也可已将代码放到一个JSP页面通过应用JSP ...
- phpgif图片包_php生成动态验证码gif图片
这是一个通过php生成的动态验证码图片的示例,重点是可以运行哦!下面先发下效果图: 下面是php生成动态验证码需要用到的相关类和函数. /** *ImageCode 生成包含验证码的GIF图片的函数 ...
- .NET中生成动态验证码
NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到防 ...
- 生成动态验证码的jsp
直接将验证码的生成工作放到jsp中,就可以直接在页面请求这个jsp,不需要再去设置servlet的的映射路径,简化代码. <%@ page language="java" p ...
- 利用 PIL模块实现生成动态验证码
简单说下需求: 当用户点击动态框时,实现实时更换动态库里的数字更换 模块: PIL io 前端页面: <img src="/get_code/" alt="&qu ...
- servlet生成网站验证码
Servlet 最近在学习Servlet,以我的理解:servlet就是运行在服务器端的一个程序,在需要时(如客户端输入某个url时),web容器自动调用某个servlet实现某个功能.我用Servl ...
- java生成动态验证码_动态生成验证码案例
servlet代码 package cn.guizimo.web.servlet; import javax.imageio.ImageIO; import javax.servlet.Servlet ...
- java生成动态验证码_java动态生成验证码
后台代码:RandomImageServlet.java package com.zhaoran.servlet; import java.awt.Color; import java.awt.Fon ...
最新文章
- list和map用法java,java 集合list和map的用法
- BitMap算法应用:Redis队列滤重优化
- 在html中取消或加上超链接的下划线
- 工作中用到的安卓日志相关命令(logcat)
- redis搭建集群(非主从)版本5.0
- 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题
- IDEA中项目引入独立包打包失败问题解决(找不到包)
- 远程控制软件用户群分析
- Spark大数据计算框架知识总结
- Codeforces Round #253 DIV1 C 馋
- 成人高考计算机专业怎么样,成人高考计算机专业就业前景怎么样?
- 实战一:输出“王者荣耀”的游戏角色
- 二分以及编程过程中求中点各种写法思想解析以及完美写法
- php判断用户是微信浏览器还是其他浏览器,PHP区分企业微信浏览器|普通微信浏览器|其他浏览器...
- 艾滋hiv最新研究进展(2022年4月)
- python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
- 光标快速移动到文档尾部_把光标移动到文件尾部的快捷键是什么呢?
- Macbook Pro 201 装Win10 声卡_MacBook+BMPCC+康佳PS300共同打造事半功倍视频制作流
- iOS 实现直接跳转打开定位
- 普通人如何在网上能月入3000以上