- 浏览: 178724 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (186)
- [网站分类]4.其他技术区 (93)
- [网站分类]6.转载区(Java技术文章转载, 请注明原文出处) (4)
- [网站分类]3.非技术区 (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (28)
- HTML&CSS (0)
- 感悟生活 (4)
- c#(.net) (1)
- [网站分类]2.Java新手区 (32)
- [网站分类]5.提问区(Java方面的技术提问) (1)
- java (6)
- web前端 (7)
- php (0)
- C++ (1)
- python (0)
- 互联网应用 (0)
最新评论
-
lliiqiang:
请求单线程资源只能等待结果.
Applet 与JS通信 -
feng2qin:
期待你的精彩回到。QQ:864479410
Applet 与JS通信 -
feng2qin:
我想问一句;哥们儿,applet程序中调用js,你真的成功了嘛 ...
Applet 与JS通信 -
lyaixsp:
...
ExtJS 入门学习之 window与panel篇 -
longzijian:
不知道 java-he 现在找到数组的这种特性 的原因在那里
和网友关于javascript数组的讨论
为了防止某些用户使用软件进行登录和发布信息,很多网站在用户登录或者发布信息时,都要求用户输入验证码。验证码通常是以一幅图片的形式显示的,用户按照图片中显示的数字或者字母依次输入,服务端将对用户输入和验证码进行比较,以判断用户是否经过检验。由于验证码都是随机生成的,自动发布信息的软件无法知道生成的验证码。
1
生成图片的程序:
2
/**//*
3
* RandomCodeServlet.java
4
*
5
* Created on 2007-5-29, 0:51:02
6
*
7
* To change this template, choose Tools | Template Manager
8
* and open the template in the editor.
9
*/
10
11
package com.javahe.image;
12
13
/** *//**
14
*
15
* @author java-he
16
*/
17
import java.awt.Color;
18
import java.awt.Font;
19
import java.awt.Graphics2D;
20
import java.awt.image.BufferedImage;
21
import java.util.Random;
22
import javax.imageio.ImageIO;
23
24
import javax.servlet.*;
25
import java.io.*;
26
import javax.servlet.http.*;
27
28
public class RandomCodeServlet extends HttpServlet
{
29
//验证码图片的宽度。
30
private int width=60;
31
//验证码图片的高度。
32
private int height=20;
33
34
protected void service(HttpServletRequest req, HttpServletResponse resp)
35
throws ServletException, java.io.IOException
{
36
BufferedImage buffImg=new BufferedImage(width,height,
37
BufferedImage.TYPE_INT_RGB);
38
Graphics2D g=buffImg.createGraphics();
39
40
//创建一个随机数生成器类。
41
Random random=new Random();
42
43
g.setColor(Color.WHITE);
44
g.fillRect(0,0,width,height);
45
46
//创建字体,字体的大小应该根据图片的高度来定。
47
Font font=new Font("Times New Roman",Font.PLAIN,18);
48
//设置字体。
49
g.setFont(font);
50
51
//画边框。
52
g.setColor(Color.BLACK);
53
g.drawRect(0,0,width-1,height-1);
54
55
//随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。
56
g.setColor(Color.GRAY);
57
for (int i=0;i<160;i++)
{
58
int x = random.nextInt(width);
59
int y = random.nextInt(height);
60
int xl = random.nextInt(12);
61
int yl = random.nextInt(12);
62
g.drawLine(x,y,x+xl,y+yl);
63
}
64
65
66
//randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
67
StringBuffer randomCode=new StringBuffer();
68
int red=0,green=0,blue=0;
69
70
//随机产生4位数字的验证码。
71
for (int i=0;i<4;i++)
{
72
//得到随机产生的验证码数字。
73
String strRand=String.valueOf(random.nextInt(10));
74
75
//产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
76
red=random.nextInt(110);
77
green=random.nextInt(50);
78
blue=random.nextInt(50);
79
80
//用随机产生的颜色将验证码绘制到图像中。
81
g.setColor(new Color(red,green,blue));
82
g.drawString(strRand,13*i+6,16);
83
84
//将产生的四个随机数组合在一起。
85
randomCode.append(strRand);
86
}
87
//将四位数字的验证码保存到Session中。
88
HttpSession session=req.getSession();
89
session.setAttribute("randomCode",randomCode.toString());
90
91
//禁止图像缓存。
92
resp.setHeader("Pragma","no-cache");
93
resp.setHeader("Cache-Control","no-cache");
94
resp.setDateHeader("Expires", 0);
95
96
resp.setContentType("image/jpeg");
97
98
//将图像输出到Servlet输出流中。
99
ServletOutputStream sos=resp.getOutputStream();
100
ImageIO.write(buffImg, "jpeg",sos);
101
sos.close();
102
}
103
}
104
105

2


3

4

5

6

7

8

9

10

11

12

13


14

15

16

17

18

19

20

21

22

23

24

25

26

27

28



29

30

31

32

33

34

35



36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57



58

59

60

61

62

63

64

65

66

67

68

69

70

71



72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

1
写好后在web.xml中添加对应的servlet。然后页面调用的时候用。
2
<%
@page contentType="text/html"%>
3
<%
@page pageEncoding="UTF-8"%>
4
<%
--
5
The taglib directive below imports the JSTL library. If you uncomment it,
6
you must also add the JSTL library to the project. The Add Library
action
7
on Libraries node in Projects view can be used to add the JSTL 1.1 library.
8
--%>
9
<%
--
10
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
11
--%>
12
<%
13
if(request.getParameter("random")!=null)
14
{
15
if(request.getParameter("random").equals(session.getAttribute("randomCode")))
16
{
17
out.println("ok!");
18
}
19
}
20
%>
21
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
22
"http://www.w3.org/TR/html4/loose.dtd">
23
24
<html>
25
<head><title>登录页面</title>
26
<body>
27
<form method="POST" action="index.jsp">
28
<table>
29
<tr>
30
<td>用户名:</td>
31
<td><input type="text" name="username"></td>
32
</tr>
33
<tr>
34
<td>密码:</td>
35
<td><input type="password" name="password"></td>
36
</tr>
37
<tr>
38
<td>验证码:</td>
39
<td>
40
<input type="text" name="random" maxlength="4">
41
<img src="imgcode">
42
</td>
43
</tr>
44
<tr>
45
<td><input type="reset" value="重填"></td>
46
<td><input type="submit" value="提交"></td>
47
</tr>
48
</table>
49
</form>
50
</body>
51
</html>
52

2



3



4



5

6


7

8

9



10

11

12



13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

最近用netbeans 总容易发生一个运行错误,指向
<nbdeploy debugmode="false" clientUrlPart="${client.urlPart}" forceRedeploy="${forceRedeploy}"/>
。感觉是绑定tomcat失败。今天晚上调式这个程序的时候又遇到这个问题。发现重启电脑后,就正常了。也许是先前运行了其他tomcat下的程序吧。
到sun的网站看看
http://forum.java.sun.com/thread.jspa?threadID=610420&messageID=4240787
发现不少人遇到同样问题,但是具体似乎没有说出个所以然,我也不想深究,必定问题自己能解决就行。呵呵。看来netbeans M9还是不够好哦。期待beta版本。
感觉M9 运行,或者编译都显得很慢。呵呵,也许是我电脑内存只有 <chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="512" unitname="m">512M</chmetcnv>的原因吧。
发表评论
-
滑块演示
2007-02-06 16:01 1023<!--<br><br> ... -
颜色选择器
2007-02-06 16:11 906这是颜色选择器的使用程序,希望对同道中人有所帮助!<!- ... -
文件选择器演示程序
2007-02-06 16:18 862<!--<br><br> ... -
进度条演示程序
2007-02-06 16:21 737进度条的使用,我的编程中一直没有使用到这个组件,但是应该其在程 ... -
连接ORACLE
2007-02-06 16:50 7581 import java.sql.*; 2 3 pub ... -
扩展按钮
2007-02-06 16:58 761<!--<br><br> ... -
全屏幕显示
2007-02-06 17:02 748<!--<br><br> ... -
日历控件
2007-02-07 09:26 827日历控件程序,也许有用。<!--<br>&l ... -
JAVA 一句话技巧(不断补充中)
2007-02-07 10:39 7451.拆分字符串遇到特殊 ... -
单态设计模式
2007-02-08 09:23 745<!--<br><br>Cod ... -
图片拖动效果
2007-02-08 13:09 703<!--<br><br> ... -
UDP简单程序
2007-02-08 13:40 587<!--<br><br>Code ... -
SOCKET编程
2007-02-08 13:48 720服务端:<!--<br><br> ... -
模拟程序启动
2007-02-08 14:00 642<!--<br><br>Code ... -
压缩软件模型
2007-02-08 14:25 737<!--<br><br>Code ... -
applet获取html参数
2007-02-09 11:41 913applet获取html传递过来的参数:<APPLET ... -
图片放大缩小程序
2007-02-13 09:29 1003<!--<br><br> ... -
读写文件
2007-02-13 14:45 913<!--<br><br>Code ... -
去除空格
2007-02-26 16:27 850<!--<br><br>Code ... -
JSP学习笔记之一
2007-04-04 09:16 786JSP学习笔记之一 —— ...
相关推荐
为了防止某些用户使用软件进行登录和发布信息,很多网站在用户登录或者发布信息时,都要求用户输入验证码。验证码通常是以一幅图片的形式显示的...由于验证码都是随机生成的,自动发布信息的软件无法知道生成的验证码。
HTML实现,有随机生成的验证码+按钮+输入框
Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建...
首先,我们需要创建一个类或方法来生成验证码。这通常包括以下步骤: 1. **定义验证码长度**:根据需求设置验证码的字符数量,通常4到6位较为常见。 2. **选择字符集**:创建一个包含所有可能字符的字符串,如数字0...
用JSP动态生成随机验证码,已经调试通过的demo,很好用的例子,绝对好用!
这个PHP动态随机生成验证码类旨在创建具有以下特点的验证码: 1. **动态生成**:验证码图片是每次请求时实时生成的,确保每次展示的验证码都是独一无二的,增加了破解的难度。 2. **纯白色填充**:背景通常采用纯...
随机验证码。 - 随机生成十组六位字符组成的验证码。 - 验证码由大小写字母、数字字符组成。
这个“随机生成验证码工具jar包”是一个Java编写的程序库,它能够帮助开发者快速地在他们的应用中集成验证码功能。让我们深入了解一下这个jar包以及与之相关的Java和jar文件的知识。 首先,Java是一个广泛使用的...
在QT中实现随机生成验证码是一项常见的任务,通常用于用户登录验证、防止机器人操作等安全场景。验证码的目的是通过要求用户输入随机生成的一串字符或图像中的数字,来确保请求是由人类而非机器发起的。 验证码的...
本话题主要关注如何使用Python编程语言,结合PIL(Python Imaging Library)模块来实现随机生成验证码图片。PIL是Python中的图像处理库,能够创建、修改和显示图像,非常适合用于生成动态验证码。 首先,我们要导入...
// 生成验证码逻辑 String captchaCode = generateCaptchaCode(); session.setAttribute("captcha", captchaCode); // 将验证码绘制为图像并输出 byte[] imageBytes = drawCaptchaImage(captchaCode); ...
该资源为小编原创的使用Python生成随机验证码的源文件,可供学习制作python验证码的小伙伴们下载
在Java中,生成随机验证码涉及到多个知识点,包括字符串处理、随机数生成、图像处理以及字体操作等。下面将详细介绍这些内容。 首先,我们要生成随机数字或字母。在Java中,可以使用`java.util.Random`类来生成...
验证码通常由一组随机生成的字符组成,可以是数字、字母或它们的组合。用户在看到验证码后需要输入相同的字符序列以证明他们是人类,而不是计算机程序。这样可以防止恶意脚本自动执行任务,增加了网站的安全性。 2...
这种验证码通常包含随机生成的字母、数字或者符号,以动画的形式展示,用户需要输入看到的验证码才能继续操作。下面将详细讲解如何在Java中实现这个功能。 1. **基础概念** - **验证码**:验证码(CAPTCHA)是...
java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可
随机生成验证码源码(java)
要生成动态验证码,首先需要在Servlet中创建一个`BufferedImage`对象,定义验证码的宽度和高度。然后,通过随机数生成器填充图像,可以绘制不同颜色的线条和字符,增加识别难度。使用`Random`类生成随机字符序列,...
在Android开发中,验证码是一种常见的安全机制,用于防止恶意机器人或自动程序进行非法操作。...在提供的`Android中两种方式随机生成验证码Demo`压缩包中,你可以找到对应的源代码实现,进一步学习和实践。
在画布上绘制随机生成的字符串,每个字符的位置和颜色都是随机的,这样可以增加识别难度。使用`Font`类创建不同样式和大小的字体,然后用`Graphics2D`的`drawString()`方法绘制。 6. **保存为图像**: 使用`...