导航:首页 > 编程语言 > java6位验证码

java6位验证码

发布时间:2025-07-16 10:55:30

Ⅰ 用java怎么制作验证码

原理:

1.随机生成4个数字 用到了Random类
2.对这4个数字设置字体格式 用 setFont方法
3.改变字体颜色用setColor 然后随机生成颜色

代码如下
package s1;

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

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

public class GetImage extends HttpServlet {

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

this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 发送图片不能够添加这2行代码
// response.setContentType("text/html;charset=UTF-8");
// request.setCharacterEncoding("UTF-8");

int width=100;
int height=50;
//获得一张图片
BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphics g=image.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(1, 1, width-2, height-2);
g.setFont(new Font("宋体",Font.BOLD,30));
Random random=new Random();

/虚枯兄/ 填充的字符串
String str="";

//缓存生成的验证码败橘
StringBuffer stringbuffer=new StringBuffer();

//随机生成验证码的颜差袭色和字符
for(int i=0;i<4;i++)
{ //设置随机颜色
g.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));

int index=random.nextInt(62);//这里的62就是从填充字符段中随意选取一个位置
String str1=str.substring(index,index+1);
g.drawString(str1, 20*i, 30);//x,y数值设置太小会显示不出来
stringbuffer.append(str1);
}

//将生成的验证码存到服务器
request.getSession().setAttribute("checkcode", stringbuffer.toString());//key和value

//将图片发送给浏览器
ImageIO.write(image, "jpg", response.getOutputStream());

}

}

用户登录界面代码
package s1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Login extends HttpServlet {

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

}

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

response.setContentType("text/html;charset=UTF-8");// 设置服务器发送给浏览器的编码方式
request.setCharacterEncoding("UTF-8"); // 客户端向服务器提交的数据的解码方式
// 获得用户提交的数据
String checkcode = request.getParameter("checkcode");
System.out.println(checkcode);

// 判断输入的验证码是不是符合
HttpSession session = request.getSession();// session是存放数据的地方
String str = (String) session.getAttribute("checkcode");

if (str != null) {
if (checkcode.compareToIgnoreCase(str) == 0) // 验证码忽略大小写
response.getWriter().println("验证码输入正确");

else
response.getWriter().println("验证码输入错误");
}

else response.getWriter().println("验证码失效");

// 使用完的验证码信息要删除,返回原页面再输一次,验证码就失效了
session.removeAttribute("checkcode");

}

}

Ⅱ java中如何编写输出一组由大写和数字组成的6个随机验证码,字母O和I不能输出

importjava.util.Random;

publicclassTest{
publicstaticvoidmain(String[]args){
charc='i';
StringBuffersb=newStringBuffer();
for(inti=0;i<6;i++){
inta=Math.abs((newRandom()).nextInt(57));//产生0~57的随机数
if(a<=9){//将0~9转为char的0~9
sb.append((char)(a+48));
}elseif(a<33){//将10~33转为char的A~Z
if((a+55)==79||(a+55)==73){
sb.append((char)(a+63));
}else{
sb.append((char)(a+55));
}
}else{//将33~57转为char的a~z
sb.append((char)(a+63));
}
}
System.out.println("随机生成的6位密码为:"+sb.toString());
}
}

Ⅲ java如何随机生成6位数的验证码

public static final char[] chars={'1','2','3','4','5','6','7','8','9','0','Q','W','E','R','T','Y','U','I','O',
'P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'};
public static Random random=new Random();
public static String getRandomString(){
StringBuffer sb=new StringBuffer();
for(int i=0;i<=5;i++){
sb.append(chars[random.nextInt(chars.length)]);;
}
return sb.toString();
}

Ⅳ 用java生成6位验证码,由大小写数字组成,不能重复字符

生成随机可以用Random类,不能重复可以考虑放在HashSet中,因为HashSet的值是不能重复的,看代码如下:

{
publicstaticvoidmain(String[]args){

Set<String>store=getletterandnum(6);

printSet(store);

}

publicstaticSet<String>getletterandnum(intlength){

Set<String>set=newHashSet<String>();

for(inti=0;i<length;i++){

Stringvalue=getrandom();

set.add(value);
}

if(set.size()<length){//如果没有生成6位

Stringvalue=getrandom();//继续调用生成随机数的方法

set.add(value);

}

returnset;
}

privatestaticStringgetrandom(){//生成随机字母和数字方法

Stringvalue="";

Randomrandom=newRandom();

intgen=random.nextInt(2);//0、1、2

Stringcharornum=gen%2==0?"char":"num";

if("char".equals(charornum)){

inttemp=random.nextInt(2)%2==0?65:97;

intascii=random.nextInt(26);

value+=(char)(ascii+temp);

}elseif("num".equalsIgnoreCase(charornum)){

value+=String.valueOf(random.nextInt(10));
}
returnvalue;
}

publicstaticvoidprintSet(Setset){//打印set的方法

Iteratoriterator=set.iterator();
while(iterator.hasNext()){
Stringele=(String)iterator.next();
System.out.print(ele+"");

}

}
阅读全文

与java6位验证码相关的资料

热点内容
解压小游戏小视频 浏览:497
解压陀螺试玩 浏览:96
易语言的代码怎么编译 浏览:350
gcc有哪些编译选项 浏览:281
源文件编译成字节码文件 浏览:419
恢复的文档怎么加密 浏览:462
推塔荣耀怎么连接不上服务器 浏览:102
ios怎么把app一次移到桌面 浏览:414
单片机蜂鸣器端口 浏览:216
安卓如何下载下架软件 浏览:972
服务器收费率怎么取 浏览:897
python航空公司绘制热力图 浏览:204
安卓应用程序文件夹怎么建立 浏览:447
曲线加密学基础知识 浏览:213
vb中命令按钮的英语是什么 浏览:815
算法不能申请专利 浏览:416
不会解压手机文件怎么办 浏览:775
怎么远程控制app 浏览:270
java乱码问号 浏览:149
自动互助链网站源码php 浏览:115