📄 validatecodeservlet.java
字号:
package com.ebuy.web.servlets;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.util.*;
/**
*
* @author Administrator
* @version
*/
public class ValidateCodeServlet extends HttpServlet
{
private static int WIDTH=80;
private static int HEIGHT=30;
private static String SEAD="1234567890";
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//设置浏览器不要缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//设置发送到客户端的数据格式
response.setContentType("image/jpeg");
//创建一个Image对象
java.awt.image.BufferedImage img=new java.awt.image.BufferedImage(WIDTH,HEIGHT,java.awt.image.BufferedImage.TYPE_INT_RGB);
//获取画笔
java.awt.Graphics g=img.getGraphics();
//设置画笔颜色
g.setColor(Color.WHITE);
//画一个白色矩形
g.fillRect(0,0,WIDTH,HEIGHT);
int red,green,blue;
//画500个点
for (int i=0;i<500;i++)
{
//产生随机器颜色
red=new java.util.Random().nextInt(255);
green=new Random().nextInt(255);
blue=new Random().nextInt(255);
//设置颜色
g.setColor(new Color(red,green,blue));
int x = new Random().nextInt(WIDTH-1);
int y = new Random().nextInt(HEIGHT-1);
//画一条线(线的起点和终点相同,实际上就是一个点)
g.drawLine(x,y,x,y);
}
//获取验证码
char[] code=this.getCode(4);
//设置画笔的颜色和字体
g.setColor(Color.BLACK);
g.setFont(new Font("Times New Roman",Font.ITALIC,26));
//画4个字符
g.drawString(String.valueOf(code[0]),10,21);
g.drawString(String.valueOf(code[1]),24,22);
g.drawString(String.valueOf(code[2]),38,21);
g.drawString(String.valueOf(code[3]),52,22);
//销毁画笔
g.dispose();
//把验证吗保存在session中
request.getSession().setAttribute("code",String.valueOf(code));
//内存写入流
java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream();
//把图片数据保存到内存流
javax.imageio.ImageIO.write(img,"JPEG",bos);
//获取图片数据
byte[] b=bos.toByteArray();
//设置应答数据的长度
response.setContentLength(b.length);
javax.servlet.ServletOutputStream sos=response.getOutputStream();
//把数据写入应答流水
sos.write(b);
bos.close();
sos.close();
}
private char[] getCode(int count)
{
int length=SEAD.length();
char[] code=new char[count];
for(int i=0;i<count;i++)
{
java.util.Random rand=new java.util.Random();
int k=rand.nextInt(length);
code[i]=SEAD.charAt(k);
}
return code;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
public String getServletInfo()
{
return "Short description";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -