java怎样输入五个数字打一成语,JAVA基础之设置随机成语验证码

JAVA基础之设置随机成语验证码

packagecom.oracle;

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.image.BufferedImage;

importjava.io.BufferedReader;

importjava.io.FileReader;

importjava.io.IOException;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Random;

importjavax.imageio.ImageIO;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

/**

*验证码生成程序

*

*

*

*/

publicclassCheckImgServletextendsHttpServlet{

//集合中保存所有成语

privateListwords=newArrayList();

@Override

publicvoidinit()throwsServletException{

//初始化阶段,读取new_words.txt

//web工程中读取文件,必须使用绝对磁盘路径

Stringpath=getServletContext().getRealPath("/WEB-INF/new_words.txt");

try{

BufferedReaderreader=newBufferedReader(newFileReader(path));

Stringline;

while((line=reader.readLine())!=null){

words.add(line);

}

reader.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

//禁止缓存

//response.setHeader("Cache-Control","no-cache");

//response.setHeader("Pragma","no-cache");

//response.setDateHeader("Expires",-1);

intwidth=120;

intheight=30;

//步骤一绘制一张内存中图片

BufferedImagebufferedImage=newBufferedImage(width,height,

BufferedImage.TYPE_INT_RGB);

//步骤二图片绘制背景颜色---通过绘图对象

Graphicsgraphics=bufferedImage.getGraphics();//得到画图对象---画笔

//绘制任何图形之前都必须指定一个颜色

graphics.setColor(getRandColor(200,250));

graphics.fillRect(0,0,width,height);

//步骤三绘制边框

graphics.setColor(Color.WHITE);

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

//步骤四四个随机数字

Graphics2Dgraphics2d=(Graphics2D)graphics;

//设置输出字体

graphics2d.setFont(newFont("宋体",Font.BOLD,18));

Randomrandom=newRandom();//生成随机数

intindex=random.nextInt(words.size());

Stringword=words.get(index);//获得成语

//定义x坐标

intx=10;

for(inti=0;i

//随机颜色

graphics2d.setColor(newColor(20+random.nextInt(110),20+random

.nextInt(110),20+random.nextInt(110)));

//旋转-30---30度

intjiaodu=random.nextInt(60)-30;

//换算弧度

doubletheta=jiaodu*Math.PI/180;

//获得字母数字

charc=word.charAt(i);

//将c输出到图片

graphics2d.rotate(theta,x,20);

graphics2d.drawString(String.valueOf(c),x,20);

graphics2d.rotate(-theta,x,20);

x+=30;

}

//将验证码内容保存session

request.getSession().setAttribute("checkcode_session",word);

//步骤五绘制干扰线

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

intx1;

intx2;

inty1;

inty2;

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

x1=random.nextInt(width);

x2=random.nextInt(12);

y1=random.nextInt(height);

y2=random.nextInt(12);

graphics.drawLine(x1,y1,x1+x2,x2+y2);

}

//将上面图片输出到浏览器ImageIO

graphics.dispose();//释放资源

//将图片写到response.getOutputStream()中

ImageIO.write(bufferedImage,"jpg",response.getOutputStream());

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

doGet(request,response);

}

/**

*取其某一范围的color

*

*@paramfc

*int范围参数1

*@parambc

*int范围参数2

*@returnColor

*/

privateColorgetRandColor(intfc,intbc){

//取其随机颜色

Randomrandom=newRandom();

if(fc>255){

fc=255;

}

if(bc>255){

bc=255;

}

intr=fc+random.nextInt(bc-fc);

intg=fc+random.nextInt(bc-fc);

intb=fc+random.nextInt(bc-fc);

returnnewColor(r,g,b);

}

}

pageEncoding="UTF-8"%>

-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

functioncode(node){

node.src="/WEB0/CheckImgServlet?time="+newDate().getTime();

}

请输入验证码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值