求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、尽量少的在循环中执行方法调用 尽量在循环中...