servlet实现验证码操作的代码

来源:互联网 发布:linux 驱动与 win驱动 编辑:程序博客网 时间:2024/06/13 21:55

1.单独的验证码ServletDemo5.java

public class ServletDemo5 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int width=110;int height=25;//在内存中创建一个图像对象BufferedImage img=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画笔Graphics g=img.getGraphics();//给图片添加背景色g.setColor(Color.PINK);//设置一个颜色g.fillRect(1, 1, width-2, height-2);//填充颜色//给边框一个颜色g.setColor(Color.RED);g.drawRect(0, 0, width-1, height-1);//设置边框的显示坐标//设置文本样式g.setColor(Color.BLUE);g.setFont(new Font("宋体",Font.BOLD|Font.ITALIC,15));//给图片添加文本Random random=new Random();int position=20;for(int i=0;i<4;i++){g.drawString(random.nextInt(10)+"",position,20);position+=20;}//添加9条干扰线for(int i=0;i<9;i++){g.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));}//将图像对象以流的方式输出的客户端ImageIO.write(img, "jpg", response.getOutputStream());}


2.网页登录窗口的验证码login.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript">function changeCode(){//得到图片元素var img=document.getElementsByTagName("img")[0];img.src="/day09_HttpServletResponse/servlet/demo5?time="+new Date().getTime();}</script></head><body><form action="#" method="post">用户名:<input type="text" name="userName"/><br>密码:<input type="password" name="pwd"/><br>验证码:<input type="text" name="code"/><img src="/day09_HttpServletResponse/servlet/demo5" onclick="changeCode()"/><a href="javascript:changeCode()">看不清换一张</a><br><input type="submit"  value="登录"/><br></form></body></html>


3.升级版,将ServletDemo5.java文件中的内容进行改进,使用工具类的方法实现验证码的操作

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//告诉客户端不使用缓存response.setHeader("pragma", "no-cache");response.setHeader("cache-control", "no-cache");response.setHeader("expires", "0");ValidateCode vc=new ValidateCode(110,25,4,9);vc.write(response.getOutputStream());}


这里要注意的是ValidateCode需要自行下载,将其放在webroor底下的lib文件夹里

效果图如图: