`
piperzero
  • 浏览: 3555823 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

JSP验证码生成 点击按钮更新

 
阅读更多

点击“看不清换一张”


测试用例:

Index.jsp

<%@ page contentType="text/html; charset=utf-8" language="java"
	import="java.util.*" errorPage=""%>
<HTML>
	<head>
		<title>测试</title>
	</head>

	<BODY id="body">
		<form>
				<img border=0 src="ImageMaskServlet" width="40" height="16" id = "imageMask">
				<a href = "#" style = "font-size: 13px;margin-left: 5px;" onclick = "myReload()">看不清换一张</a>
		</form>
	    <script type="text/javascript">
	    //用于刷新验证码
		 function myReload(){  
            document.getElementById("imageMask").src=document.getElementById("imageMask").src+"?nocache="+new Date().getTime();  
        }  
		</script>
	</BODY>
</HTML>

ImageMaskServlet

package javaServlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImageMaskServlet extends HttpServlet {
	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);

		int width = 60, height = 20;
		//创建图象 
		BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
		//获取图形上下文 
		Graphics graphics = image.getGraphics();
		//生成随机类
		Random random = new Random();
		//设定背景色 
		graphics.setColor(getRandColor(200, 250));
		//验证码大小
		graphics.fillRect(0, 0, width, height);
		//设置字体
		graphics.setFont(new Font("Times New Roman", Font.PLAIN, 18));
	    //graphics.setColor(getRandColor(160, 200));
		//随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			graphics.drawLine(x, y, x + xl, y + yl);
		}
		//取随机产生的认证码(4位数字) 
		String sRand = "";
		for (int i = 0; i < 4; i++) {
			//0~9
			String rand = String.valueOf(random.nextInt(10));
			sRand += rand;
			//设置数字颜色
			graphics.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
			//把随机产生的4位数画在图片上
			graphics.drawString(rand, 13 * i + 6, 16);
		}
		//放在session中
		request.getSession().setAttribute("imageMask", sRand);
		//图象生效 
		graphics.dispose();
		//输出图象到页面 
		ImageIO.write(image, "JPEG", response.getOutputStream());
	}
	//生成随机颜色
	public Color getRandColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255){
			fc = 255;
		}
		if (bc > 255){
			bc = 255;
		}
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
}



分享到:
评论

相关推荐

    jsp随机生成验证码

    然后在提交表单的按钮点击事件中,将输入的验证码与`session`中的验证码进行比较。 总结,使用JSP生成随机验证码涉及到JSP基本语法、内置对象、字符串操作、随机数生成、图像处理以及服务器端验证等多个知识点。这...

    jsp验证码刷新功能

    `:更新图片的源地址,通过添加当前时间和随机数,确保每次点击刷新按钮时都会加载新的验证码图片。 3. **刷新按钮绑定**:定义了一个按钮,当用户点击时会触发`refresh`函数执行,从而刷新验证码。 ```html ...

    5种JSP验证码的源代码.rar

    在JSP中,可以通过AJAX技术实现,每当用户刷新页面或点击刷新验证码按钮时,服务器会生成新的验证码并更新到页面上。 5. 声音验证码: 对于视觉障碍的用户,声音验证码是一种很好的替代方案。JSP可以配合Java的...

    JSP 随机验证码

    5. **刷新验证码**:当用户点击刷新按钮时,重新执行以上过程,生成新的验证码并替换旧的。 在实际应用中,为了提高用户体验,还可以添加一些附加功能,如: - **文本扭曲**:通过扭曲或旋转数字,增加机器识别的...

    jsp验证码源码下载

    10. **安全注意事项**:尽管JSP验证码可以提供基础防护,但更高级的攻击手段(如OCR识别)可能仍能破解。因此,验证码只是多层安全措施中的一环,结合其他验证机制如IP限制、时间限制等,可以提高安全性。 以上就是...

    jsp中实现验证码刷新功能

    - 在JSP页面中,我们可以创建一个`&lt;img&gt;`标签,其`src`属性指向一个处理验证码生成的Servlet或JSP页面(如`rand.jsp`)。 - `rand.jsp`接收到请求后,生成验证码字符串,并将其存入session,同时将其转换为图像...

    jsp验证码实现

    - **刷新验证码**:当用户点击“刷新”按钮时,需要更新session中的验证码。 - **过期机制**:设置验证码的有效时间,过期后需要重新生成。 - **防止重放攻击**:每个验证码只能使用一次,使用后立即失效。 - **...

    jsp+servlet 生成验证码

    在实际应用中,还可以通过Ajax技术实现无刷新更换验证码,即用户点击“换一张”按钮时,无需刷新整个页面,仅更新验证码图像。这通常涉及到JavaScript、JQuery等前端技术,以及Servlet的异步处理。 总的来说,"jsp+...

    java完美的验证码生成

    - 使用JavaScript和Ajax技术,当用户点击“换一张”按钮时,发送异步请求到服务器获取新的验证码,无需刷新整个页面。 - 验证码的更新和验证都通过Ajax完成,提升用户体验。 6. **代码注释和操作方法**: - 为了...

    随机生成验证码(JSP)

    在JSP中,我们可以创建一个包含验证码生成逻辑的Java类,然后在JSP页面上调用这个类来生成和显示验证码。Servlet则用于处理HTTP请求,例如当用户点击“刷新验证码”按钮时,Servlet会生成新的验证码并更新到Session...

    验证码jsp源代码

    以下是关于JSP验证码实现及相关知识点的详细解释: 1. **JSP(JavaServer Pages)**:JSP是Java平台上的动态网页技术,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,服务器端执行Java代码并返回结果到...

    jsp验证码实现源码

    在IT行业中,验证码是一种常见...总的来说,JSP验证码的实现涉及到了Java的图形处理、字符串生成、会话管理等多个方面。通过这样的验证码机制,开发者可以有效地保护Web应用免受恶意自动化攻击,确保用户交互的安全性。

    JSP验证码+刷新java

    总结来说,JSP验证码的实现涉及Java的图像处理、随机数生成以及session管理,而刷新功能则需要前后端的协同配合,利用AJAX实现无刷新刷新验证码。理解并掌握这些技术,对于构建安全的Web应用具有重要意义。

    JSP实现用户登录验证码验证实例

    4. **用户提交登录信息**:当用户输入用户名、密码和验证码并点击“登录”按钮时,JSP页面将这些信息发送到服务器。 5. **服务器端验证**:服务器接收到请求后,检查输入的验证码是否与会话中的验证码匹配。如果...

    jsp servlet 动态验证码

    在动态验证码场景中,当用户点击“刷新验证码”按钮时,AJAX请求会被触发,向服务器发送请求以获取新的验证码。服务器生成新的验证码后,通过JSON或其他数据格式返回,前端JavaScript代码接收到新验证码并更新图像。...

    JSP验证码的详细资料用浏览器打开

    当用户点击刷新验证码按钮时,服务器端重新生成验证码并返回新的图像。 ### 4. 用户输入验证 用户在输入框中输入看到的验证码后,提交表单。服务器端接收到请求后,会检查session中存储的验证码是否与用户输入的...

    jsp登入界面添加验证码

    - **刷新验证码**:在JSP页面中添加一个链接或按钮,用户可以点击刷新验证码。 - **无障碍性**:为视力障碍用户提供音频验证码选项。 - **安全性**:定期更换字体库和颜色组合,防止被破解。 通过以上步骤,你就...

    java验证码及刷新

    本项目是一个基于Java实现的验证码生成及刷新功能,涉及到的技术主要包括JSP(JavaServer Pages)和Servlet。 首先,我们来看JSP。JSP是Java的一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,使得...

    jsp验证码 不影响表单

    1. **独立的验证码刷新按钮**:为验证码提供一个单独的刷新按钮,点击该按钮时仅更新验证码图像,而不触发表单重置。 2. **AJAX请求**:使用`JavaScript`的`XMLHttpRequest`或`fetch` API异步发送请求到`JSP`,请求...

    Web动态生成验证码

    8. **刷新验证码**:当用户点击“刷新”按钮时,重新执行上述步骤,生成新的验证码并更新图像。 在实际应用中,还可以考虑其他安全措施,例如限制用户尝试验证的次数,设置验证码过期时间,或者使用更复杂的验证码...

Global site tag (gtag.js) - Google Analytics