首先是要生成验证码:
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
>
分享到:
相关推荐
jsp 验证码生成和刷新详解 jsp 验证码生成和刷新是 Web 开发中非常重要的一部分。验证码的生成和刷新可以防止机器人攻击和恶意注册。下面我们将详细介绍 jsp 验证码生成和刷新的过程。 一、四位数据的验证图片生成...
java 动态 gif 验证码 工具类 + servlet调用方法 + 测试jsp
可以定制的验证码 可以数字、英文、中文其中的任意组合,也可以定制组合的长度 这是一个完整的示例,可以根据自己的需求稍作修改 里面有完整的注释和操作方法
验证码生成逻辑 1、前端调用API接口,向后端发起一个[获取验证码]请求。 2、后端得到请求,创建验证码ID(通常利用UUID直接创建),然后以各种方式生成一串随机内容(常见的包括英文、数字、中文、数学公式) 3、...
// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(String.valueOf(code.charAt(rand)),13*i+6,16); } // 将认证码存入SESSION session.setAttribute("rand",sRand); // 图象生效 g....
2、在jsp页面,编写一个请求servlet的名称"> 3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 ...
JSP开发之生成图片验证码技术的详解 我们在网页注册用户时,常常会需要格根据图片给的图片验证码把验证码输进去。那么我们今天就来学习这个。 简单来说分为三步骤: 1.底层用Java实现生成验证码图片 2.通过配置...
75. 请求jsp页面禁止缓存方法? 76. select选中其中的值自动到一个文本框? 77. JSP连接数据库? 78. JSP两级下拉列表框联动(数据库)? 79. JSP字符编码问题及转换大全? 80. 使用过滤器设置请求编码? 81. JSP或Servlet...
数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...
由FreeMarker生成页面,通过模板显示准备的数据 FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 ...
案例8:JSP调用JavaBean在网页上动态生成柱状图 案例9:实现图片上传 案例10:JSP页面调用Applet实现人民币大小写转换 本章小结 第4章 Servlet高级编程设计与实现 案例1:Servlet中的多国语言显示 案例2:JSP调用...
· 在设计上自身预先做了搜索引擎优化,增强对搜索引擎的友好性 · 完全生成全站静态页面,可自定义路径结构,无需urlrewrite · 轻松建设大规模网站,可通过次级域名建立子站群,各子站后台管理权限分离,全站实现单...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...
20.5.4 生成随机验证码的imgNum类 358 20.5.5 用户登录页面index.jsp 359 20.5.6 验证用户登录信息的Servlet类login 360 20.6 显示宠物信息模块的实现 363 20.6.1 对应宠物的实体类User 363 20.6.2 定义对宠物信息...
当客户端发送请求时,服务器端的Servlet通过JSP页面或HTML页面提取请求数据,并根据数据内容调用JavaBean访问数据库,进行计算处理或直接进行计算处理,然后把计算结果返回至Servlet,Servlet根据数据内容把计算结果...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...
23、修改了:Js 调用所产生的论坛链接不能生成静态 URL 的问题。 24、修复了:前台自定义信息分类--日期控件IE下显示错误,谷歌浏览器下乱码现象 25、修改了:如果后台设置的“论坛名称”过长,在分栏模式下将出现...
Java验证码生成库 JCaptcha.rar JAXP数据验证引擎 Serene.zip JBoss事务处理 JBossTS.zip JDBC连接池、监控组件 Druid.zip JFCSwing用户图形界面 SwingML.rar JNI代码生成器 JNIGen.zip JSCSS压缩工具 YUI ...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...