问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求java语言随机生成图片验证码的程序代码,有详细注释最好,本人初学者,谢谢各位的帮忙!!!

发布网友 发布时间:2022-04-27 03:35

我来回答

3个回答

热心网友 时间:2023-11-18 14:06

楼上正解

/**
 * 图片验证码
 * 
 * @author HuangYong
 * 
 */
public class CheckCode extends HttpServlet {
private static final long serialVersionUID = 1532787236715859525L;
/**
 * 验证图片宽
 */
private static final int WIDTH = 80;

/**
 * 验证图片高度
 */
private static final int HEIGHT = 20;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获得图片
BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB);
// 获取画笔
Graphics g = image.getGraphics();

// 设置边框
setBounds(g);

// // 设置背景
// setBackGround(g);

// 干扰线
drawRandomLine(g);

// 验证码
drawRandomString((Graphics2D) g, request);

// 发送给页面
response.setContentType("image/jpeg");
response.setDateHeader("expries", -1);
response.setHeader("cache-control", "no-cache");
response.setHeader("progma", "no-cache");
ImageIO.write(image, "jpg", response.getOutputStream());
}

/**
 * 边框
 * 
 * @param g
 */
private void setBounds(Graphics g) {

g.setColor(Color.BLUE);
g.fillRect(0, 0, WIDTH, HEIGHT);

g.setColor(Color.WHITE);
g.fillRect(1, 1, WIDTH - 2, HEIGHT - 2);

}

/**
 * 背景
 * 
 * @param g
 */
// private void setBackGround(Graphics g) {
//
// g.setColor(Color.WHITE);
// g.drawRect(1, 1, WIDTH-2, HEIGHT-2);
//
// }

/**
 * 干扰线
 * 
 * @param g
 */
private void drawRandomLine(Graphics g) {

g.setColor(Color.GREEN);

int x1, y1;
int x2, y2;

Random r = new Random();

for (int i = 0; i < 5; i++) {
// 起始xy
x1 = r.nextInt(WIDTH);
y1 = r.nextInt(HEIGHT);
// 结束xy
x2 = r.nextInt(WIDTH);
y2 = r.nextInt(HEIGHT);

g.drawLine(x1, y1, x2, y2);
}

}

/**
 * 验证码
 * 
 * @param g
 */
private void drawRandomString(Graphics2D g, HttpServletRequest request) {

g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD, 20));
String base = "qwertyupasdfghjkzxcvbnm23456789QWERTYUIOPASDFGHJKLZXCVBNM";
StringBuilder sb = new StringBuilder();
char ch = '\u0000';
int degree = 0;
Random r = new Random();
int startX = 8;

for (int i = 0; i < 4; i++) {
ch = base.charAt(r.nextInt(base.length()));

// 设置旋转, ±20°
degree = r.nextInt() % 20;
g.rotate(degree * Math.PI / 180, startX, 14);
g.drawString(ch + "", startX, 16);
// 取消旋转
g.rotate(-degree * Math.PI / 180, startX, 14);

startX += 18;
sb.append(ch);
}

request.getSession().setAttribute("checkCode", sb.toString().toLowerCase());
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

 希望能帮助你

热心网友 时间:2023-11-18 14:07

//设置页面无缓存
 response.setHeader("Pragma","No-cache"); 
 response.setHeader("Cache-Control","no-cache"); 
 response.setDateHeader("Expires", 0); 
 int width=60, height = 20;
 //构造BufferedImage
 BufferedImage image = new BufferedImage(width, height,
 BufferedImage.TYPE_INT_RGB);
 //构造画板
 Graphics g = image.getGraphics();
 Random random = new Random();
 g.setColor(getRandColor(200, 250));
 g.fillRect(0, 0, width, height);
 g.setFont(new Font("Times New Roman", Font.BOLD, 18));
 g.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(20);
 int yl = random.nextInt(20);
 g.drawLine(x, y, x + xl, y + yl);
 }
 //随机生成验证码,然后画在画板上
 String sRand = "";
 for (int i = 0; i < 4; i++) {
 String rand = String.valueOf(random.nextInt(10));
 sRand += rand;
 g.setColor(new Color(20 + random.nextInt(110), 20 + random
 .nextInt(110), 20 + random.nextInt(110)));
 g.drawString(rand, 13 * i + 6, 16);
 }
 // 将认证码存入SESSION 
 session.setAttribute("validateCode", sRand);
 g.dispose();
 //将BufferedImage写入到响应流中
 ImageIO.write(image, "JPEG", response.getOutputStream());

热心网友 时间:2023-11-18 14:07

李克平【看来可怕【
求java语言随机生成图片验证码的程序代码,有详细注释最好,本人初学者...

/** * 图片验证码 * * @author HuangYong * */public class CheckCode extends HttpServlet {private static final long serialVersionUID = 1532787236715859525L;/** * 验证图片宽 */private static final int WIDTH = 80;/** * 验证图片高度 */private static final int HEIGHT = 20;publ...

零基础初学者学习编程语言应该学习哪一种?

常见的编程语言是很多的,比如:C语言、c++、C#、Java、asp、PHP、JavaScript,还有一些标记语言html、css等。对于初学者,想做简单的编程的话,建议从C语言开始入门。C语言是最主流的基础语言。现在软件开发上所用的的主流的高级编程语言大多数都是以C语言为基础演化而来的,掌握好C语言有助于学习其他的...

怎么写代码初学者?

2、无基础的学员:对于已经有一定编程基础的同学来说,边用边学往往会有更高的学习效率,比如程序员在学习一门新的编程语言时,如果采用听课的方式学习也许并不是最高效的。 很多程序员是直接看代码案例,然后就开始尝试应用,然后再逐渐提升应用的熟练程度,因为对于已经有成熟编程思想的程序员来说,不同的编程语言仅仅是...

求套java学习视频,详细完整的,百度网盘

程序员入门先学什么(程序员初学)

编程入门先学什么比较好? 01 C语言 编辑程序让电脑执行的过程就叫编程。很多软件都可以编程,具有代表性的计算机语言有Java,BASICC,C++,VB,VF,SQL,网页编程JSP,ASP,PHP,软件是eclipse,MicrosoftVisualStudio,MicrosoftVisualBasic,MicrosoftSQLServer,等等。Java是应用最广泛的编程语言之一,大学中则常常以C语言作为编程的...

编写java程序的软件有哪些(编写java用什么程序好)

JDK是Java语言必备的工具,我们代码编写、编译、运行都是依靠jdk来帮助我们运作,jdk是编写Java代码的根基。梁者 学JAVA编程都要下什么软件学JAVA编程都要下什么软件 学习java编程你必须下载一个jdk,这个是开发java语言的sun公司提供的java编程环境,没有这个环境你无法编写和运行java程序,当然也就无法学习...

谁能给一个Java程序代码我,要50行到100行就可以啦。最好有几行解释

import java.util.Scanner;public class MoneyCalculate { public static void main(String[] args) { int max100 = 0;int max25 = 0;int max5 = 0;int max1 = 0;double money = getMoneyFromInput();String str = String.valueOf(money).trim();String[] ary = str.split("\\.");...

javaserverpage?

编程也是一样,当你看到工程详细说明时已经下意识的在脑中构建好了整个程序的框架,一切成竹在胸才是高手。 4java怎么样学习 学习JavaSE基础 可以找一本书(任何大学教材)学习Java的基础部分,不要看特别厚的书,比如Java编程思想,对于初学者看这类书太累。并不推荐只是看视频学习,而是要边看书边照着书上的代码打...

java开发了哪些软件?

JavaWorkshop的特点表现如下:1)结构易于创建:在创建平台中立的网格结构方面,JavaWorkshop比其他任何一种Java开发工具都要方便。 2)可视化编程:JavaWorkshop的可视化编程特性是很基本的。 JavaWorkshop允许程序员重新安排这些操作,甚至可以确定触发操作行为的过滤器。 JavaWorkshop产生的模板带有许多注释,这对程序员是很有...

Java初学者入门学什么?

1、Java注释尽可能全面 对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说明、作者和修改者。2、多次使用的相同变量最好归纳成常量 多处使用的相同值的变量应该尽量归纳为一个常量,方便日后的维护。3、尽量少的在循环中执行方法调用 尽量在循环中...

java语言代码 进制转换java语言代码 java简单程序代码大全 java编程代码大全 java语言是哪国的 java语言是哪个公司推出的 java语言的特性 java语言冒泡排序 java冒泡排序代码完整
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新轩逸保养一次多少钱? ...每个小长方形的周长是多少厘米?(你能想出几 铅的正常是多少合适 两个同样的长方形,长是8分米,宽4分米。把它们拼成一个长方形,它的周长... ...拼成一个大长方形拼成的长方形的周长是多少分米 ...长8分米,宽是4分米,如果把它们拼成一个长方形,这个长方形的周长是... ...如果把它们拼成长方形,这个长方形的周长是多少? ...把它们拼成一个正方形,周长是___分米;把它们拼成一个长方... 把两个边长是4分米的正方形拼成一个长方形,这个长方形的周长是___ ...长是8分米,宽是4分米.如果把它们拼成一个长方形,这个长方形的周长是... 用delphi怎么生成验证码的图片 jsp图片验证码 javascript中验证码如何以图片形式生成 如何生成图片,例如验证码是怎样产生的求大神帮助 如何用ServletJSP动态生成图像验证码 asp如何生成验证码图片? python怎么生成随机图形验证码 注册是有个图片验证,这个具体是怎么实现的? 图片验证怎么做的? 如何生成图片,例如验证码是怎样产生的 手机怎样连接到不见不散的小音响 不见不散便携音箱如何调音量? 不见不散LV950旅行者小音箱怎样把收音机功能调出来? 不见不散小音箱bv370能和台式电脑连接吗 音响不见不散没有声音怎么办? 淘宝的不见不散小音响有假货吗? 你们好,我向你们请交一下,我买了个不见不散插卡小音箱带有调频收音机的,现在收不到台了想恢复出厂设置 不见不散小音箱坏了可以修吗 不见不散小音箱播放时有滴滴的声音是什么问题? 问一下:python培训班怎么选择? 酿海参怎么做? 鲁菜特色菜 扒酿海参怎么做? 海参简单做法? 海参早上怎么吃,做起来简单有快 海生正确的做法 海参如何让简单吃? 海参的做法有哪些?都有写什么口味的做法? 扒酿海参的营养成份 怎么才能快速整理iphone桌面图标 iPhone手机快速整理桌面应用图标,很多人都不知道! 怎么改变iphone图标布局 猪前腿肉好还是后腿肉好吃? 红烧肉用前腿肉还是五花肉 红烧肉买什么部位的肉 用哪个部位的猪肉做红烧肉好吃? 女人梦到蛇代表什么 女人梦见蛇到底是什么预兆 电脑不显示桌面图标怎么办 浙江八大员考试时间2022 建筑八大员报考时间入口