简单的网页验证码设计——学习笔记
来源:互联网 发布:淘宝上买电器可靠吗 编辑:程序博客网 时间:2024/05/10 19:39
生成验证码的servlet代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 定义图片的宽高 Integer width = 50; Integer height = 25; // 在内存中创建一张空白图片 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取在image对象上面的画笔 Graphics g = image.getGraphics(); // 设置画笔颜色 g.setColor(getRandomColor(160, 200)); // 把颜色填充到image对象上面 g.fillRect(0, 0, width, height); // 随机产生线条 Random rd = new Random(); // 添加图片上面的验证码 g.setFont(new Font("微软雅黑", Font.ITALIC, 20)); // 设置随机生成验证码内容字符串 String lowerStr = "abcdefghijkmnlopqrstuvwxyz"; String upperStr = lowerStr.toUpperCase(); String number = "0123456789"; String codeString = lowerStr + number + upperStr; // char[] codeChars = codeString.toCharArray(); // 定义存储随机的4个字符组成的字符串 String code = ""; for (int i = 0; i < 4; i++) { // 随机从codeString对象中抽取一个字符转换一个字符串 String validatCode = String.valueOf(codeString.charAt(rd .nextInt(codeString.length()))); code += validatCode; // 设置当前画笔的颜色 g.setColor(new Color(20 + rd.nextInt(110), 20 + rd.nextInt(110), 20 + rd.nextInt(110))); // 把每次获取到的字符串写到图片上面 g.drawString(validatCode, i * 10 + 4, 20); } // 设置干扰线的颜色 g.setColor(getRandomColor(200, 250)); // 添加干扰线 for (int i = 1; i <= 20; i++) { int x = rd.nextInt(width); int y = rd.nextInt(height); int x1 = rd.nextInt(9); int y1 = rd.nextInt(9); g.drawLine(x, y, x + x1, y + y1); } // 把获取的验证码存在session对象中 request.getSession().setAttribute("code", code); g.dispose(); // 输出图片对象 ImageIO.write(image, "JPEG", response.getOutputStream()); } public Color getRandomColor(int fc, int bc) { fc = fc > 255 ? 255 : fc; bc = bc > 255 ? 255 : bc; Random rd = new Random(); int r = fc + rd.nextInt(bc - fc); int g = fc + rd.nextInt(bc - fc); int b = fc + rd.nextInt(bc - fc); return new Color(r, g, b); }
显示的jsp页面调用servlet 显示验证码
<body>验证码:<img src="ValidateCodeServlet" id="validate" /><a href="javascript:void(0);" onclick="refresh();">看不清</a><script> //刷新验证码的处理函数 var refresh = function(){ var validate = document.getElementById('validate'); //这里要向后台servlet随便传点内容,以区别每次请求,达到刷新的效果 validate.src="ValidateCodeServlet?random="+Math.round(); };</script>
0 0
- 简单的网页验证码设计——学习笔记
- 学习笔记:简单验证码
- javaweb学习笔记(八)-带验证码的简单登录
- 响应式网页设计——学习笔记一
- 响应式网页设计——学习笔记二:HTML5
- 响应式网页设计——学习笔记三:CSS3
- 学习笔记—网页设计基础知识(一)
- 一个简单的验证网页
- SEO 学习笔记4——对搜索引擎友好的网页设计制作
- struts2学习笔记(2)——简单的输入验证以及标签库的运用
- 网页验证码简单实现
- 练习HTML——简单的网页设计
- 【JSP学习笔记】使用Servlet实现网页验证码
- JavaWeb学习笔记——验证码工具的使用
- 【Java学习笔记】——验证码
- Django学习笔记—验证码
- Django学习笔记—验证码
- [笔记]简单的验证码制作
- aidl(android 接口定义语言)
- C++声明和定义的区别 收藏
- Swift开发基础篇—基本语法
- LINUX下压缩某个文件夹(文件夹打包)
- Class文件结构
- 简单的网页验证码设计——学习笔记
- 什么是XPCOM
- PowerShell Function之获取OS信息
- 关于编码
- set-matrix-zeroes
- 调用Android相机拍照的问题
- 剖析怎样使用Spring的PropertyPlaceholderConfigurer占位符
- 如何查找一个变量在哪里被调用了
- C语言版Trim()函数,去除字符串中的空字符