直接切入主题,2年前写的一个图片码,记录一下。
1 生成图片码主类:RandomCode
3 编写一个loginservlet
在loginservlet过滤中 加入这个就行了,jsp页面提交到loginservlet
在post中加入
4 web.xml
1 生成图片码主类:RandomCode
package com.gpdi.util; /** * @Description: 图片码 * @author: jy * @CreateTime: Sep 19, 2010 10:01:46 PM * */ import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet implementation class RandomCode */ public class RandomCode extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 验证码图片的宽度。 int width = 64; // 验证码图片的高度。 int height = 25; BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); // 创建一个随机数生成器类。 Random random = new Random(); // 设定图像背景色(因为是做背景,所以偏淡) g.setColor(getRandColor(200, 250)); g.fillRect(0, 0, width, height); // 创建字体,字体的大小应该根据图片的高度来定。 Font font = new Font("Times New Roman", Font.BOLD, 18); // 设置字体。 g.setFont(font); // 画边框。 g.setColor(Color.BLACK); g.drawRect(0, 0, width - 1, height - 1); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到。 //g.setColor(Color.GRAY); g.setColor(getRandColor(160,200)); for (int i = 0; i < 155; i++) { 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); } // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。 StringBuffer randomCode = new StringBuffer(); // 设置默认生成4个验证码 int length = 4; // 设置备选验证码:包括"a-z"和数字"0-9" String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; int size = base.length(); // 随机产生4位数字的验证码。 for (int i = 0; i < length; i++) { // 得到随机产生的验证码数字。 int start = random.nextInt(size); String strRand = base.substring(start, start + 1); // 用随机产生的颜色将验证码绘制到图像中。 // 生成随机颜色(因为是做前景,所以偏深) //g.setColor(getRandColor(1, 100)); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); g.drawString(strRand, 15 * i + 6, 24); // 将产生的四个随机数组合在一起。 randomCode.append(strRand); } // 将四位数字的验证码保存到Session中。 HttpSession session = request.getSession(); session.setAttribute("rand", randomCode.toString()); //图象生效 g.dispose(); // 禁止图像缓存。 response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); // 将图像输出到Servlet输出流中。 ServletOutputStream sos = response.getOutputStream(); ImageIO.write(buffImg, "jpeg", sos); sos.flush(); sos.close(); } Color getRandColor(int fc, int bc) {// 给定范围获得随机颜色 Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } }
2 index.jsp页面加入 <td height="20" align="right"> [b]验 证 码[/b]: </td> <td height="30" align="left"> <input type="text" name="code" style="width:55px"> </td> <td> <img src="RandomCode" id="img"> </td> <td style="color:#1686BC"> [url=#]看不清,换一张[/url]</td>
3 编写一个loginservlet
在loginservlet过滤中 加入这个就行了,jsp页面提交到loginservlet
在post中加入
String code = request.getParameter("code"); HttpSession session = request.getSession(); if (!code.equalsIgnoreCase((String) session.getAttribute("rand"))) { request.setAttribute("errormsg", "验证码输入错误!"); request.getRequestDispatcher("index.jsp").forward(request, response); return; }
4 web.xml
<servlet> <description></description> <display-name>RandomCode</display-name> <servlet-name>RandomCode</servlet-name> <servlet-class>com.gpdi.util.RandomCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>RandomCode</servlet-name> <url-pattern>/RandomCode</url-pattern> </servlet-mapping>
发表评论
-
12306模型设计探讨
2016-04-28 14:10 664春节期间,无意中看到 ... -
Dubbo与Zookeeper、SpringMVC整合
2016-03-18 16:31 835互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构 ... -
TCP/IP,http,socket,长连接,短连接
2016-03-18 16:22 772TCP/IP TCP/IP是个协议组,可分为三个层次:网络层 ... -
移动互联网App客户端服务端通信安全问题。
2016-01-20 12:13 1587作为一个移动互联网App,天生是需要和服务器通信的。那么,服 ... -
前后端分离开发部署模式
2015-12-12 11:10 9762这周着手开始重新构 ... -
Jenkins + Git + Maven + tomcat集成环境(转)
2015-11-07 11:01 12545折腾了好几天,终于吧Jenkins + Git ... -
Apache Commons(转)
2012-08-31 11:36 804Apache Commons包含了很多开源的工具,用于解决平时 ... -
Cron 常用表达式
2012-08-31 11:34 2903Cron 常用表达式 <SELECT NAME=&qu ... -
httpSession的正确理解
2012-07-20 12:43 821httpSession的正确理解 ... -
利用Session防止表单重复提交
2012-07-20 10:01 3053为什么需要防止表单重复提交呢? 重复提交不仅仅是验证的问题 ... -
jnlp
2012-05-08 10:59 4459java提供的一种让你可以通过浏览器直接执行java应用程序的 ... -
Spring Quartz 调度与Jdk Timer
2012-05-08 10:14 1822,最近经历的几个项目大多里面都使用到Spring Quart ... -
Dozer 深层次复制
2012-05-07 15:04 7859最近在做项目上遇到了 ... -
使用FreeMarker生成java代码
2012-05-07 14:36 36481 编写ftl模版; 2 编写java生成类(主要用来设置好 ...
相关推荐
Win8创建图片密码与Pin码.docx
Win8如何创建图片密码与Pin码.docx
Win8系统PIN码与图片密码的创建.docx
文件上传图片码 editor 解释器
python 自动办公 用Python批量往Word文档中指定位置添加图片 码实例有详细注解,适合新手一看就懂
里面附带一个JSP页面,直接引用该页面就可以生成4位的随机验证码图片,很好用,另外有一个用JS代码生成4为验证码!
C#开发的识别图片条形码,C#开发的识别图片条形码
最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码图片最好的ascII码...
用Code39 C#动态生成条形码图片 代码简单 修改方便 通用,可用于商品管理 用扫描枪即可获取条形码
生成图片印证码,有干扰。生成图片印证码,有干扰。仅供产考。。。
可进行压缩图片和添加水印,对图片有恶意代码的进行重新创建新图片替代,如果不是图片类型的禁止上传,改后缀,工具改二进制码为图片码都无效,前后端都进行检测,避免关闭javascript进行渗透。
ctfshow web165 JPG二次渲染脚本(生成图片马)脚本
第一步:截取图片中的条形码并另存为缩略图。 第二步:识别缩略图中的条形码。
qt代码写的128码输出图片为Qimage格式
可以把图片转换成ASCII码 多种设置 挺好完的 虽然有类似的网站 这个可以生成 带颜色 的
打印_tiff文件带有图片和条形码
微信开放平台扫码登陆解析处理工具,将frame数据处理为图片或Base64图片数据返回客户端进行扫码。解决Chrome70中open.weixin.qq.com腾讯SSL证书不被信任的问题,解决Chrome68中frame跨域被拦截的问题。
java实现html转换pdf
好用的图片转换工具,可以进行多种格式的转换,设定转换图片的像素,图片命名,可批量转换,好实用的工具。操作简单,中文破解版。
图片 滚 动 代 码图片左右 滚 动 代 码 图片滚动实例 图片 向上滚 动 代 码 图片向下 滚动实例 图片 滚 动 代 码 图片滚动实例 javascript图片滚动 代码 javascript图片滚动实例