首先是要生成验证码:
package
XX.XX
import
java.io.
*
;
import
java.util.
*
;
import
javax.imageio.
*
;
import
java.awt.
*
;
import
java.awt.image.
*
;
public
class
ImageEnsure
...
{
public
ImageEnsure()
...
{
}
private
char
mapTable[]
=
...
{
'
0
'
,
'
1
'
,
'
2
'
,
'
3
'
,
'
4
'
,
'
5
'
,
'
6
'
,
'
7
'
,
'
8
'
,
'
9
'
}
;
public
String getEnsure(
int
width,
int
height, OutputStream os)
...
{
if
(width
<=
0
)
width
=
60
;
if
(height
<=
0
)
height
=
20
;
BufferedImage image
=
new
BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
//
获取图形上下文
Graphics g
=
image.getGraphics();
//
设定背景色
g.setColor(
new
Color(
0xDCCCCC
));
g.fillRect(
0
,
0
, width, height);
//
画边框
g.setColor(Color.black);
g.drawRect(
0
,
0
, width
-
1
, height
-
1
);
//
取随机产生的认证码
String strEnsure
=
""
;
//
4代表4位验证码
for
(
int
i
=
0
; i
<
4
;
++
i)
...
{
strEnsure
+=
mapTable[(
int
) (mapTable.length
*
Math.random())];
}
//
将认证码显示到图象中
g.setColor(Color.red);
g.setFont(
new
Font(
"
Atlantic Inline
"
, Font.PLAIN,
14
));
//
画的具体坐标
String str
=
strEnsure.substring(
0
,
1
);
g.drawString(str,
8
,
14
);
str
=
strEnsure.substring(
1
,
2
);
g.drawString(str,
20
,
15
);
str
=
strEnsure.substring(
2
,
3
);
g.drawString(str,
35
,
18
);
str
=
strEnsure.substring(
3
,
4
);
g.drawString(str,
45
,
15
);
//
释放图形上下文
g.dispose();
try
...
{
//
输出图象到页面
ImageIO.write(image,
"
JPEG
"
, os);
}
catch
(IOException e)
...
{
return
""
;
}
return
strEnsure;
}
}
然后是调用,可以在页面调用,也可以在servlet中调用,我推荐是单独的一个servlet调用,在页面调用可能会出现异常,但是不影响使用。在servlet中写上如下的代码:
//
禁用缓存,每次访问此页面,都重新生成
response.setHeader(
"
Pragma
"
,
"
No-cache
"
);
response.setHeader(
"
Cache-Control
"
,
"
no-cache
"
);
response.setDateHeader(
"
Expires
"
,
0
);
//
生成验证码的实例对象
ImageEnsure ie
=
new
ImageEnsure();
//
调用里面的方法,返回的是生成的验证码中的字符串
String str
=
ie.getEnsure(
0
,
0
,response.getOutputStream());
//
获得session,并把字符串保存在session中,为后面的对比做基础
HttpSession session
=
request.getSession();
session.setAttribute(
"
strEnsure
"
, str);
然后把servlet内嵌到具体的网页中,具体嵌入就是用DreamWeaver在需要插入验证码的地方插入图像,地址就指向此servlet即可。
输入验证码并提交后,在新的页面中可以按如下方法判断:
<
body
>
<%
//
session的默认存在时间为20分钟,如果20分钟不输入验证码,session将会消失,因此要做下判断
if
(session.getAttribute(
"
strEnsure
"
)
==
null
)
...
{
%>
<
jsp:forward page
=
"
ImageErr.jsp
"
/>
<%
}
else
...
{
//
获取在session中保存的生成验证码的数字
String ensure
=
(String)session.getAttribute(
"
strEnsure
"
);
//
获取在页面的表单中输入的验证码
String code
=
request.getParameter(
"
txtimage
"
);
//
判断输入的验证码,跟保存的生成的验证码是否一样
if
(ensure.equals(code)
&&
code
!=
null
)
...
{
%>
<
jsp:forward page
=
"
searchword?method=add
"
/>
<%
}
else
...
{
%>
<
jsp:forward page
=
"
ImageErr.jsp
"
/>
<%
}
}
%>
</
body
>
分享到:
相关推荐
这里,`generateRandomCode()`和`createAndDrawCaptcha(String)`是自定义的方法,分别实现了验证码生成和图片绘制的逻辑。 总之,通过JSP生成图片验证码虽然可能不如使用Servlet直接控制HTTP响应那么灵活,但仍然...
压缩包中的"验证码生成"文件可能包含了实现上述步骤的JSP代码示例。通过查看和学习这个示例,你可以了解到如何在实际项目中生成和使用验证码。为了深入理解,你需要了解JSP语法、Java图像处理以及HTTP会话管理等相关...
jsp 验证码生成和刷新详解 jsp 验证码生成和刷新是 Web 开发中非常重要的一部分。验证码的生成和刷新可以防止机器人攻击和恶意注册。下面我们将详细介绍 jsp 验证码生成和刷新的过程。 一、四位数据的验证图片生成...
然后,在JSP页面中使用`<jsp:include>`标签将验证码生成的Servlet包含进来,例如: ```jsp // 创建CaptchaGenerator实例 CaptchaGenerator captcha = new CaptchaGenerator(); // 生成验证码 String code = ...
- **开发步骤**:首先,创建JSP页面,定义请求处理逻辑,如接收到请求后调用API发送语音验证码;然后,处理用户的验证请求,比较输入的验证码与生成的验证码是否一致。 - **调试与测试**:通过模拟用户请求,检查...
在Web开发中,使用JSP(JavaServer Pages)来生成验证码图片是一种常见的方法。下面我们将详细讨论如何在JSP中实现验证码的生成。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机的字母和数字,有时...
jsp+servlet编写的验证码程序是一种基于Java EE的验证码生成程序,使用jsp和servlet技术来生成验证码。在本节中,我们将详elerate这个程序的结构和实现细节。 一、项目结构 项目结构如图1所示,包名为...
验证码生成(yzm_string.jsp) - **页面配置**:设置页面内容类型为`image/jpeg`,表示返回的是JPEG格式的图像。 - **色彩生成**:定义了一个方法`getRandColor(int fc, int bc)`用于生成随机颜色。 - **图像绘制**...
### JSP生成验证码图片:深度解析与实现细节 在当今的网络应用中,验证码作为一种防止自动化工具滥用的有效手段,被广泛应用于用户登录、表单提交等场景中。本文将深入探讨如何利用Java Server Pages(JSP)技术...
本教程将详细讲解如何在Java环境下实现一个完美的、可定制的验证码生成系统。 首先,验证码的基本原理是生成一串随机字符串,并将其与图像结合,用户在看到图像后需输入对应的字符串,服务器端会验证用户输入的字符...
为了实现验证码的刷新功能,可以在JSP页面中使用Servlet来动态生成验证码图片。Servlet接收请求,生成验证码文本(存储在session中),然后创建并返回验证码图片。JSP页面通过AJAX请求刷新Servlet,每次请求都会得到...
### JSP验证码生成 #### 1. 基本概念 验证码是一种防止自动化软件攻击的安全机制,常用于用户登录、表单提交等场景。JSP(Java Server Pages)是一种基于Java的技术,用于创建动态网页。在JSP中生成验证码通常涉及...
#### 二、验证码生成流程 验证码的生成与验证通常分为三个步骤: 1. **生成验证码图像**:通过服务器端动态生成包含随机字符串的图像。 2. **存储验证码值**:将生成的验证码值存储在Session中。 3. **验证用户...
实验五主要涵盖了AJAX技术的运用以及JSP验证码的开发,这两个知识点对于前端开发者来说是至关重要的。AJAX,即Asynchronous JavaScript and XML(异步JavaScript和XML),它允许网页在不重新加载整个页面的情况下与...
4. **JSP页面展示**:在JSP页面中,我们将调用上述方法生成验证码图像,并将其显示在页面上。同时,需要创建一个表单供用户输入验证码。 5. **处理表单提交**:当用户提交表单时,我们通过Servlet或JSP的内置对象`...
在IT行业中,验证码...总的来说,通过导入一个简单的Java文件并集成到JSP项目中,我们可以快速地实现一个功能齐全的验证码生成器,从而提高网站的安全性。这种方法简单易行,对于初学者来说也是一个很好的实践项目。
知识点三:验证码生成的关键步骤 1. 设置页面属性:通过设置response对象的相关头信息来防止页面缓存,确保每次请求都生成新的验证码。 2. 创建图形环境:在内存中创建BufferedImage对象,这是生成验证码图像的基础...
在本示例中,由于已经使用了net.js封装好的js实现,开发者无需关心具体的验证码生成逻辑,只需调用提供的API即可。这大大简化了开发流程,提高了开发效率。 运行例子时,你需要确保已经正确安装了net.js库,并且...
尽管它相对简单,但对于小型项目或者学习JSP验证码实现是一个很好的起点。开发者可以根据自己的需求,比如添加更复杂的图像变形,或者引入语音验证码等,以提高安全性。同时,对于实际生产环境,可能还需要考虑对...
在这个案例中,JSP用于生成验证码图像。通常,JSP页面会包含一段Java代码,该代码创建随机字符序列,并用特定的字体、颜色和背景噪声来渲染,生成具有视觉混淆效果的图片。 `Servlet`则是在服务器端运行的Java程序...