- 浏览: 138186 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
yaoneng:
谢谢~~不错~~
Eclipse格式化不换行 -
fys124974704:
没想过中文的条形码!
项目使用条形码 -
yangpanwww:
你好! 内容好像不支持中文。。有什么解决方案不
项目使用条形码 -
fys124974704:
Stone_eye 写道fys124974704 写道Ston ...
flowplayer学习 -
Stone_eye:
fys124974704 写道Stone_eye 写道哥们,想 ...
flowplayer学习
编写一个Servlet
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; 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; public class CheckCodeServlet extends HttpServlet { private static int WIDTH = 60; private static int HEIGHT = 20; public char[] generateCheckCode() { // 定义验证码的字符表 String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] rands = new char[4]; for (int i = 0; i < 4; i++) { int rand = (int) (Math.random() * 36); rands[i] = chars.charAt(rand); } return rands; } public void drawRands(Graphics g, char[] rands) { g.setColor(Color.BLACK); g.setFont(new Font(null, Font.ITALIC | Font.BOLD, 18)); // 在不同的高度上输出验证码的每个字符 g.drawString("" + rands[0], 1, 17); g.drawString("" + rands[1], 16, 15); g.drawString("" + rands[2], 31, 18); g.drawString("" + rands[3], 46, 16); } public void drawBackground(Graphics g) { // 画背景 g.setColor(new Color(0xDCDCDC)); g.fillRect(0, 0, WIDTH, HEIGHT); // 随机产生120个干扰点 for (int i = 0; i < 120; i++) { int x = (int) (Math.random() * WIDTH); int y = (int) (Math.random() * HEIGHT); int red = (int) (Math.random() * 255); int green = (int) (Math.random() * 255); int blue = (int) (Math.random() * 255); g.setColor(new Color(red, green, blue)); g.drawOval(x, y, 1, 0); } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); response.setContentType("image/jpeg"); ServletOutputStream sos = response.getOutputStream(); // 设置浏览器不缓存此图片 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 创建内存图像并获得其图形上下文 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 产生随机的验证码 char[] rands = generateCheckCode(); // 产生图像 drawBackground(g); drawRands(g, rands); // 结束图像的绘制过程,完成图像 g.dispose(); // 将图像输出到客户端 ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageIO.write(image, "JPEG", bos); byte[] buf = bos.toByteArray(); response.setContentLength(buf.length); sos.write(buf); bos.close(); sos.close(); // 将当前验证码存入到session中 session.setAttribute("checkCode", new String(rands)); System.out.println(session.getAttribute("checkCode")); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
编写一个html页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script type="text/javascript"> function ajaxMethod(cid){ document.getElementById(cid).setAttribute("src",null); //加上随机数的目的是为了每次都改变url 让浏览器不要加载缓存 var svalue = "/JsParserXML/servlet/CheckCodeServlet?id=" + Math.random(); document.getElementById(cid).setAttribute("src",svalue); } function colorblue(id){ document.getElementById(id).color="blue"; } function colorblack(id){ document.getElementById(id).color="black"; } </script> </head> <body> <font size="2">验证码 :</font> <img id="checkCodeImage" src="/JsParserXML/servlet/CheckCodeServlet" style="cursor:pointer" onclick="javascript:ajaxMethod('checkCodeImage');"/> <a style="cursor:pointer" onclick="javascript:ajaxMethod('checkCodeImage');"><font id="fontId" size="2"><u onmouseover="colorblue('fontId');" onmouseout="colorblack('fontId');">看不清换一个</u></font></a> </body> </html>
发表评论
-
某网站系统升级遇到的问题
2011-01-07 10:08 992某网站前端系统升级,开发机器使用win2003,浏览器测试IE ... -
Linux+Lucene+Tomcat+OpenEjb发布细节
2011-01-06 18:04 55细节1:首先在linux系统上先查看ulimit -a ... -
ejb定时器
2010-12-29 16:43 110如何在EJB容器做一个定时器,分四个步骤: 1 配置运行环境 ... -
IO流的笔记(一)
2010-11-01 11:23 69import java.io.FileInputStre ... -
小型聊天室--DWR实现服务器推技术
2009-07-17 15:59 3161开始我曾经用PHP做过一个聊天室,但是需要用JS不 ... -
项目使用条形码
2009-06-15 10:59 2123首先要去http://barcode4j.so ... -
注意Java的误区
2009-04-28 17:15 841import java.util.ArrayList; /* ... -
JPA (一)
2009-04-20 11:05 649JPA 全称 Java Persistence A ... -
Properties里面的一些系统值
2009-03-25 10:03 716当我们需要求出一些系统参数的时候,需要使用到Prope ... -
log4j 简单使用
2009-01-12 16:26 1319使用Log4j 感觉好像就是学怎么写它的配置文件 呵呵!! ... -
log4j.properties 配置
2009-01-12 16:22 1019og4j.properties 使用一.参数意义说明输出级别的 ... -
Aspectj 入门(一)
2008-12-30 21:14 3764由于Spring的配置过多,个人不喜欢!但是又想使 ... -
日期处理笔记
2008-12-16 14:21 958获取上个月 java.text.SimpleDateForm ... -
struts2-入门实例
2008-11-25 08:35 939struts2 传说中很优秀的web框架,融合了webw ... -
JSF入门例子
2008-11-21 12:00 7740首先去 http://java.sun.com/javaee/ ... -
J2ME学习选择
2008-11-07 08:28 933J2ME学习起来感觉还是比较多方向的,基于手机有很多系统,但是 ... -
一个MIDlet的入门例子
2008-11-05 10:02 908import javax.microedition.lcdu ... -
精简之美
2008-10-30 09:18 838有一条阶乘的问题,就是怎么去写才能让代码最少,最精简!我想了很 ... -
quartz入门一
2008-10-14 14:00 1694quartz是一个好东西!一直想使用它做一些事情,就是没 ... -
logic-iterator用法
2008-09-22 14:26 1614<%@ page language="java ...
相关推荐
JAVA 实现验证码(完整代码) JAVA 实现验证码是一种常见的验证机制,用于防止机器人和自动程序的攻击。下面是关于 JAVA 实现验证码的详细知识点: 验证码的概念和作用 验证码是一种challenge-response测试,用于...
在Java中实现验证码涉及到图像处理、随机数生成、字体操作等多个方面的知识。本文将深入探讨如何使用Java来创建一个简单的图形验证码。 首先,我们需要了解验证码的基本原理。验证码通常包含一串随机生成的字符,...
验证码是Web应用中常见的一种安全机制,...综上所述,Java实现验证码涉及图像处理、随机数生成、字符串操作以及Web交互等多个方面。通过上述步骤,你可以轻松地将验证码功能集成到自己的Java工程中,提升应用的安全性。
【JavaWeb】(11)Java实现验证码制作,三种不同的验证码制作。
以上就是基于Java实现验证码的一个基本框架。实际应用中,验证码的设计会更复杂,可能包括颜色混淆、噪声线的添加、字体的随机选择、角度偏移等多种增强手段,以提高安全性。同时,为了提升用户体验,验证码的生成...
Java实现验证码的关键步骤 ###### (1) 创建图像 ```java // 创建 BufferedImage 对象,指定类型为 TYPE_INT_BGR BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); // 获取 ...
java实现滑动验证码
以上就是一个简单的Java实现验证码的流程。实际应用中,你可能还需要考虑更多的安全因素,如使用更复杂的扭曲算法、加入时间戳防止重放攻击、添加文本和颜色的多样性等。此外,还可以考虑使用现有的开源验证码库,如...
以上就是使用Java Servlet和JSP实现验证码的基本步骤。在实际应用中,还需要考虑一些优化措施,如防止重复请求同一验证码、设置验证码过期时间等。这个过程可以通过解压名为`verifyCodeDemo`的压缩包文件来查看具体...
在本案例中,我们将探讨如何使用Java语言来实现验证码的生成。Java作为一种广泛使用的编程语言,具有丰富的库和工具支持,使得验证码的实现变得相对简单。 验证码通常由一串随机字符组成,这些字符可以是数字、字母...
在Java中实现验证码的绘制涉及多个知识点,包括图形处理、随机数生成、颜色处理等。以下将详细讲解这些知识点。 首先,验证码的基本原理是生成一组随机字符(通常包含字母、数字和特殊字符),并将其以扭曲、倾斜、...
本文将深入探讨如何使用Java编程语言来实现验证码验证,主要涉及Servlet、session以及画板对象等关键技术和概念。 首先,验证码(CAPTCHA)全称为“Completely Automated Public Turing test to tell Computers and...
在Java JSP(Java Server Pages)中实现验证码功能,主要涉及以下几个关键知识点: 1. **随机字符串生成**: 验证码通常由一组随机字符组成,可以是字母、数字或两者混合。在Java中,我们可以使用`java.util....
在JAVA实现验证码识别的过程中,我们可能用到以下关键技术: 1. 图像处理库:JAVA有许多图像处理库可供选择,如Java Advanced Imaging (JAI)、OpenCV的JAVA接口或ImageJ。这些库提供了丰富的函数,用于进行图像处理...
验证码(JAVA实现)验证码(JAVA实现)验证码(JAVA实现)验证码(JAVA实现)
验证码在信息技术领域中扮演着重要的...总的来说,JAVA实现验证码的源代码是一个很好的学习资源,不仅能够帮助开发者理解图形处理、随机数生成以及网络通信等相关知识,还能够提升他们在实际项目中解决安全问题的能力。