「验证码图片java」验证码图片不显示

博主:adminadmin 2023-01-13 09:54:06 244

本篇文章给大家谈谈验证码图片java,以及验证码图片不显示对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java程序如何解析验证码图片

验证码解析???验证码一般是在后台生成,然后保存在session里,再返回前台上显示,验证时输入数字后调用session的属性就可以判断了

java怎么显示网页验证码图片

这个的话,要涉及到jsp、servlet、网页,后台的请求了。我这里写一个给你看看吧。

 ,这个是我的github仓库,里面刚好就有个一个我自己写的输出验证码的。

使用ide:myeclipse

jdk:1.6.0

服务器:tomcat

JAVA识别图片验证码

package com.he;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import java.awt.*;

import java.awt.image.*;

import javax.imageio.*;

public class CodeFact

extends HttpServlet {

public void doGet(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 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.PLAIN, 18));

//画边框

g.setColor(new Color(33,66,99));

g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandColor(160, 200));

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);

g.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;

// 将认证码显示到图象中

g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110),

20 + random.nextInt(110))); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.drawString(rand, 13 * i + 6, 16);

}

// 将认证码存入SESSION

HttpSession session = request.getSession();

session.setAttribute("rand", sRand);

// 图象生效

g.dispose();

// 输出图象到页面

ImageIO.write(image, "JPEG", response.getOutputStream());

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

doGet(request, response);

}

//给定范围获得随机颜色

private 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);

}

}

你试试!!

java怎么生成验证码图片

原理,在servlet中随机生成一个4位数字1000-9999

然后把这数字写入session

输出一个图片,上面写有这四个数字

在服务器端根据用户输入的数字和

session中的值比较。

注意比较结束后要清空session中的值

有很多人问到验证码的作用。

我作个简单的解释。

验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区还来说这个功能还是很有必要,也很重要。但我们还是提醒大家主要保护自己的密码,尽量使用混杂了数字、字母、符号在内的6位以上密码,不要使用诸如1234之类的简单密码或者与用户名相同、类似的密码。

还有就是注册时发表文章时加验证码,就防人用注册机,无限的自动注册,

package com.schoolwx.util;

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.*;

public class getImg extends HttpServlet {

private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体

//处理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的随机数

String s="";

int intCount=0;

intCount=(new Random()).nextInt(9999);//

if(intCount1000)intCount+=1000;

s=intCount+"";

//对session付值。

HttpSession session=request.getSession (true);

session.setAttribute("getImg",s);

response.setContentType("image/gif");

ServletOutputStream out=response.getOutputStream();

BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);

Graphics gra=image.getGraphics();

//设置背景色

gra.setColor(Color.yellow);

gra.fillRect(1,1,33,12);

//设置字体色

gra.setColor(Color.black);

gra.setFont(mFont);

//输出数字

char c;

for(int i=0;i4;i++) {

c=s.charAt(i);

gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置

}

JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

}

}

关于验证码图片java和验证码图片不显示的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。