最近,在弄一个微薄类的sns项目,需要用到验证码,记录下。代码如下,主要是在serlet中实现图片生成,跟随机数,然后把随机数同步到session中
package com.ecar.portal.common.servlet; import java.io.*; import java.util.*; import com.sun.image.codec.jpeg.*; import javax.servlet.*; import javax.servlet.http.*; import java.awt.*; import java.awt.image.*; /** * 功能:调用AuthServlet可以生成一个验证码图片,图片的宽度和高度可以自定义 * 调用格式: /servlet/AuthServlet?width=60&height=20 * 或者/servlet/AuthServlet * 时间:2010-8-6 * * @author: lyj */ public class VerifyServlet extends HttpServlet { private Font mFont=new Font("Times New Roman", Font.BOLD,22);//设置字体 //static String AuthCode=""; // 处理post public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { // 取得一个1000-9999的随机数 //System.out.println("servlert方法调用"); HttpSession session=request.getSession();//request.getSession(false)当参数为false时,有可能不创建session //session.setAttribute("getImg",s); response.setContentType("image/gif"); response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); int width=60; int height=20; if(request.getParameter("width")!=null && !request.getParameter("width").equals("")) width = Integer.parseInt(request.getParameter("width")); if(request.getParameter("height")!=null && !request.getParameter("height").equals("")) height = Integer.parseInt(request.getParameter("height")); ServletOutputStream out=response.getOutputStream(); BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //设置图片大小的 Graphics gra=image.getGraphics(); Random random=new Random(); gra.setColor(getRandColor(233,244)); //设置背景色 gra.fillRect(0,0,width,height); gra.setColor(Color.black); //设置字体色 gra.setFont(mFont); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 gra.setColor(getRandColor(160,200)); for (int i=0;i<150;i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); gra.drawLine(x,y,x+xl,y+yl); } // 取随机产生的认证码(4位数字) String sRand=""; for (int i=0;i<4;i++){ String rand=String.valueOf(random.nextInt(10)); sRand+=rand; // 将认证码显示到图象中 gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 gra.drawString(rand,13*i+6,18); } //ystem.out.println("showimage="+sRand); //session.setAttribute("getImg",sRand); session.setAttribute("AuthCode",sRand); //AuthCode = sRand; //session.putValue("AuthCode",sRand); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); encoder.encode(image); //out.flush(); } static 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); } static public String getAuthCode(HttpSession session){//返回验证 return (String)session.getAttribute("AuthCode"); } }
发表评论
-
java的日志处理指南
2016-01-14 15:35 1972Java日志基础 Java使用了一种自定义的、可扩展的方法 ... -
javaWeb开发中ServletContext总结
2015-03-19 00:01 1069WEB容器在启动时,它会为每个WEB应用程序都创建一个对应 ... -
java日志组件介绍(common-logging,log4j,slf4j,logback )
2015-03-17 10:12 1005common-logging common-logging ... -
hibernate本地sql(native查询)查询的3种转换方式
2015-03-11 08:51 871在hibernate使用的过程中.我们通常需要对结果进行解释 ... -
hibernate 的查询
2013-12-03 14:58 735QBC (Query By Criteria) 主要有Cri ... -
Linux下jdk安装
2012-02-02 18:04 7421下载需要安装的的jdk文件,放在一个用户指定文件夹中,进 ... -
集群简介(转)
2011-08-26 10:03 849一:集群概念: 1. 两大关键特性 集群是一组协同 ... -
velocity的使用示例(转)
2011-07-28 11:48 1135不少人看过或了解过Velo ... -
java程序中访问url接口
2011-07-06 10:56 4276在多人开发项目中,我们经常要在自己程序内部调用别人的http ... -
JAVA操作COOKIE的总结
2011-06-10 11:52 12601.设置Cookie Cookie cookie = ... -
常用JAVA过滤器用法
2011-06-10 10:32 1451java 代码 一、使浏览器不缓存页面的过滤器 i ... -
Java中cookie和session 1相关应用之2
2011-06-09 15:29 1323十一、session在不同环境下的不同含义 sessio ... -
Java中cookie和session 1相关应用
2011-06-09 15:27 1246一、cookie机制和session机制的区别 具体来 ... -
编写你自己的单点登录(SSO)服务
2011-05-31 20:56 755单点登录(SSO)的技术 ... -
单点登陆(Single Sign On-SSO)
2011-05-31 20:54 1053本文以某新闻单位多媒 ... -
javamail实现登录发送邮件
2011-05-20 16:25 1348[color=darkred][/color]/** ...
相关推荐
在JavaWeb开发中,实现邮箱发送验证码功能是常见...总之,JavaWeb中实现邮箱发送验证码功能涉及到配置邮件服务、使用JavaMail API发送邮件以及可能的验证码管理逻辑。确保正确配置并理解这些步骤,就能顺利实现该功能。
本示例提供的源代码是一个简单的JAVAWEB验证码功能实现,它不依赖任何外部jar包,也不涉及JavaScript,全部采用Java后端处理和JSP页面展示。 验证码的实现主要包括以下几个关键步骤: 1. **生成随机验证码**:在...
在这个“SSM实现登录验证码功能”的项目中,我们将探讨如何在SSM框架下添加验证码功能,以增强用户登录的安全性。 首先,验证码功能的基本目的是防止恶意自动化程序(如机器人或爬虫)进行非法操作,如频繁尝试登录...
手机验证码功能实现demo 含代码和视频教程!!!!
ASP.NET实现验证码功能的aspx文件,里面包含了三个文件,CreateImage.aspx.cs包含了验证码功能的实现,前端和设计和新建的窗口文件一样没有任何改动,因为功能的实现就是通过一次又一次的加载page_load函数实现功能...
本资源是基于Spring Boot框架开发的验证码功能模块,旨在为Web应用程序提供可靠的验证码生成和验证服务。该模块提供了多种类型的验证码生成,包括数字、字母、数字字母组合等,同时支持自定义长度和有效期。验证码...
实现的功能比较简单,就是随机产生了四个字符然后输出。效果图如下,下面我会详细说一下实现这个功能用到了那些知识点,并且会把 这些知识点详细的介绍出来。哈哈 ,大神勿喷,对于初学Java的人帮助应该蛮大的。嘿嘿...
1、本Demo主要是实现Android开发中的短信验证功能。比如用户登录界面上的短信验证。 2、采用的是第三方的免费插件Mod。 3、相关介绍请查看博文:https://blog.csdn.net/lpCrazyBoy/article/details/81014128
### 实现验证码功能 在现代网站与应用中,验证码(CAPTCHA)被广泛用于区分真实用户与自动程序,以防止恶意登录、注册等行为。本文将详细介绍如何在Web应用程序中实现验证码功能,包括其基本原理、实现步骤以及一个...
### Java使用SSM框架实现登录页面的验证码功能 在现代Web开发中,为了增强网站的安全性,防止自动化脚本攻击,通常会在用户登录时加入验证码功能。本文将详细介绍如何使用SSM(Spring、SpringMVC、MyBatis)框架来...
需要的快进行下载吧!新建一个Java项目,修改一下包名就可以运行了!
"Java案例之随机验证码功能实现实例" 该资源主要介绍了Java实现随机验证码功能的实例,通过生成四位不重复的验证码,演示了Java中数组、Random函数和字符串操作的使用。 知识点一:数组 * 数组的定义:在Java中,...
在ASP.NET MVC框架中,验证码功能是用于防止自动机器人或者恶意用户进行非法操作的一种安全机制。...以上就是ASP.NET MVC验证码功能实现的详细解析,这个功能对于任何需要用户验证身份的Web应用都是至关重要的。
SSM 实现登录验证码功能 本文主要介绍了使用 SSM 框架实现登录验证码功能的方法,通过实例代码详细介绍了验证码的实现过程,具有很高的参考价值。 验证码的重要性 验证码是一种常用的安全机制,用于防止机器人和...
本文实例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给大家供大家参考,具体如下: 背景 ThinkPHP5.0 已经出现很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用。 ♜ 功能开发 1).引入第三方...
演示地址:https://loyer.wang/
本篇文章将深入探讨如何在Android平台上实现验证码功能,包括自定义控件的创建和验证码的生成与验证。 首先,验证码的主要目的是防止恶意机器人或自动化脚本进行非法操作,如批量注册、刷票等。在Android应用中,...
在这个特定的场景中,我们关注的是如何在ASP.NET中实现验证码功能,这是一种用于验证用户身份的安全机制,通常用于防止自动化程序(如机器人)进行恶意操作。 验证码在网页上通常表现为一串随机生成的图像文字,...
在网站开发中,验证码无疑是必不可缺的一项功能。这个是简易验证码的实现Demo。