验证码在网站中是一个非常常用的,主要用于有效防止对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
此演示代码主要包括以下三部分:
1.checkCode.java :用于生成验证码
2.checkCodeServler
3.check.jsp 验证
------------------------------------------------------------------------------
下面是checkCode.java的内容:
//用于获取四位随机数
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; //返回生成的随机数
}
------------------------------------------------------------------------------
再是checkCodeServlet的内容
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//禁用缓存,每次访问此页面,都重新生成
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//生成验证码的实例对象
CheckCode ie = new CheckCode();
//调用里面的方法,返回的是生成的验证码中的字符串
String str = ie.getEnsure(0,0,response.getOutputStream());
//获得session,并把字符串保存在session中,为后面的对比做基础
HttpSession session = request.getSession();
session.setAttribute("strEnsure", str);
}
------------------------------------------------------------------------------
然后是web.xml对servlet的配置
<servlet>
<servlet-name>CheckServlet</servlet-name>
<servlet-class>com.blog.servlet.CheckServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckServlet</servlet-name>
<url-pattern>/check</url-pattern>
</servlet-mapping>
------------------------------------------------------------------------------
最后是jsp页面的引用
<html>
<head>
<title>验证码</title>
<script type="text/javascript" language="javascript">
//重新获取验证字符
function changeImage()
{
//单击触发图片重载事件,完成图片验证码的更换
document.getElementById("imgRandom").src = document.getElementById("imgRandom").src + '?';
}
</script>
</head>
<body>
<img alt= "看不清楚?点击更换验证码 " src= "check" width= "100" height= "50" id="imgRandom" onclick="changeImage()"/>
<a href="javascript:changeImage();">看不清?</a>
</body>
</html>
------------------------------------------------------------------------------
在jsp页面中,只需要将img的src的属性指向生成验证码的servlet就可以了,指向servle在web.xmlt映射的url
////转载////
分享到:
相关推荐
### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...
"jsp+servlet 生成验证码"是一个典型的Web应用程序开发场景,结合了JavaServer Pages(JSP)和Servlet技术来创建动态的、可变的图像验证码。 **JSP(JavaServer Pages)**是Java平台上的一个标准视图层技术,它允许...
动态生成验证码,并可以将用户输入的验证码和自动生成的进行比对,给出比对的结果
在IT领域,特别是Web开发中,验证码是一种常见的安全机制,用于区分...总之,使用JSP和Servlet技术生成验证码是一种有效提升Web应用安全性的方法,通过合理设计和实现,可以有效地抵御自动化攻击,保护用户数据安全。
在这个场景中,我们使用...总之,Servlet生成图片验证码是一种常见的Web安全实践,通过结合Java的图形库和HTTP交互,可以实现高效且安全的用户验证机制。在设计和实现时,应充分考虑用户体验和安全性之间的平衡。
jsp+servlet编写的验证码程序是一种基于Java EE的验证码生成程序,使用jsp和servlet技术来生成验证码。在本节中,我们将详elerate这个程序的结构和实现细节。 一、项目结构 项目结构如图1所示,包名为...
`index.jsp`文件通常是用户首次请求验证码的页面,它可能包含一个HTML表单,用户可以通过点击按钮触发Servlet生成验证码。表单的ACTION属性应该指向我们的Servlet。 `result.jsp`文件则用于显示验证结果。当用户...
在这个例子中,JSP页面可能包含一个`<img>`标签,其`src`属性指向一个Servlet,该Servlet负责生成验证码的图像并将其作为HTTP响应的一部分返回给浏览器。 3. **控制器(Controller)**: 用户输入验证码后,会提交...
在生成验证码时,我们可以通过Java的Math类或者第三方库如Apache Commons Lang来生成随机字符串。然后,使用Java的Graphics2D类将字符串绘制到BufferedImage对象上,添加一些扭曲、噪声等效果,以增加识别难度。 ...
2. **Servlet生成验证码**: Servlet接收到请求后,使用随机算法生成一个唯一的验证码字符串,并将其存储在服务器的session中。 3. **创建验证码图像**: Servlet将验证码字符串绘制成图像,并返回给JSP。 4. **显示...
在本项目中,我们结合了JSP、AJAX和Servlet技术来创建一个动态验证码系统。下面将详细讲解这三个技术以及它们在实现动态验证码中的应用。 **JSP(JavaServer Pages)** JSP是Java的一种视图技术,用于生成动态网页...
在本案例中,`RandomCodeServlet` 类继承了 `HttpServlet` 类,并重写了 `service` 方法,该方法负责生成验证码图片并将其发送给客户端。具体实现步骤如下: 1. **创建图片**:首先创建一个 `BufferedImage` 对象...
验证码在网站中是一个非常常用的,主要用于有效防止对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,今天提供的代码是jsp引用servlet生成的验证码
首先,在项目中添加一个名为 AuthImg.java 的 Servlet,用于生成验证码图片。这是一个继承自 HttpServlet 的 Java 类,重写了 service 方法,以生成对客户端的响应。该方法设置了禁止缓存的头信息,ContentType 设置...
在servlet中动态生成验证码图片,可被JSP或servlet引用,每次刷新都会改变验证码
彩色验证码的实现是在生成验证码的基础上增加了颜色元素,使得验证码更难以被自动化工具识别,增强了安全性。 JSP是一种基于Java的服务器端脚本语言,用于创建动态网页。在本项目中,`code.jsp`是核心页面,它负责...
在这个案例中,可能使用了`Servlet`来生成和验证随机验证码,同时结合`jsp`展示验证码图像。 `mysql`是关系型数据库管理系统,用于存储用户的登录注册信息,如用户名、密码(通常加密存储)以及可能的其他个人信息...
例如,可以使用 `HttpServletResponse` 对象来设置验证码的内容类型和缓存控制,而 `HttpServletResponse` 对象则可以用来生成验证码图片。 验证码生成示例 以下是一个简单的验证码生成示例: ```java import java...
1. **随机生成验证码**:首先,我们需要创建一个包含随机字符的字符串作为验证码。这些字符可以是字母、数字或者是两者混合。通常,验证码的长度为4到6个字符。在JSP中,我们可以使用`java.util.Random`类来生成...