Java生成验证码
来源:互联网 发布:svg获取坐标 path.js 编辑:程序博客网 时间:2024/05/17 07:17
后台Java代码
@RequestMapping(value="/123.html") public void yaz(HttpServletResponse response,HttpServletRequest request) throws Exception{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("text/html;charset=utf-8"); int width=80;int height=40; //画板 BufferedImage b =new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //工具 Graphics g= b.getGraphics(); g.setColor(new Color(40, 200, 255)); g.fillRect(0, 0, width, height); char[] ch="QWERTYUIOPASDFGHJKLZXCVBNM1234567890".toCharArray(); Random random = new Random(); int len = ch.length,index; StringBuffer sb = new StringBuffer(); for (int i = 0; i < 4; i++) { index = random.nextInt(len); g.setColor(new Color(random.nextInt(88), random.nextInt(188), random.nextInt(255))); g.setFont(new Font("微软雅黑", Font.BOLD, 18)); g.drawString(ch[index]+"", i*15+3, 18); sb.append(ch[index]); } //干扰线 for(int i=1;i<10000;i++){ g.setColor(new Color(random.nextInt(88), random.nextInt(188), random.nextInt(255))); g.drawLine(random.nextInt(i*3+2), random.nextInt(i*5+1), random.nextInt(i*3+1),random.nextInt(i*9)); } //结束 g.dispose(); b.flush(); //保存 request.getSession().setAttribute("yzm", sb.toString()); try { //输出图片到页面 ImageIO.write(b, "png", response.getOutputStream()); } catch (IOException e) { } }前台代码
<body><!-- 图片的路径直接是验证码的请求路径即可 --><img alt="" src="<%=request.getContextPath()%>/123.html" id="reload" onclick="reload2()"><script type="text/javascript">function reload2(){ var time = new Date().getTime(); document.getElementById("reload").src="<%=request.getContextPath()%>/123.html?d="+time;}//为什么请求多了一个参数呢? 是为了告诉浏览器这是一个不同的请求,否则验证码不刷新</script></body>
0 0
- java生成验证码
- Java 生成验证码
- Java 验证码生成
- java生成验证码
- java生成验证码
- java生成验证码
- Java生成验证码
- Java生成验证码
- java生成验证码
- java生成验证码
- java验证码生成
- java生成验证码
- Java生成验证码
- java生成验证码
- Java生成验证码
- Java生成验证码
- JAVA--生成验证码
- java 生成验证码
- 图的遍历
- 【备忘】Google Android开发入门与实战 PDF 下载
- NOIP2016提高组复赛 解题报告
- GitLab版本管理
- 敏捷其实很简单(7) Scrum Master的7种武器之长生剑和孔雀翎
- Java生成验证码
- canvas+js实现进度条
- Java基础 - 平衡二叉查找树(AVL树)
- 枚举与define的区别和volatile关键字的作用
- 28. Implement strStr()
- oracle 主键自增
- 收录Java基础面试题
- zigbee提升最大节点数的一点点研究
- POJ-2676-Sudoku