首页 > 代码库 > Session应用之验证码

Session应用之验证码

 1 package com.aeolia.view; 2  3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.image.BufferedImage; 6 import java.io.IOException; 7 import javax.imageio.ImageIO; 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 13 public class CheckCode extends HttpServlet {14     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {15 16         //禁止浏览器缓存随即图片17         response.setDateHeader("Expires", -1);18         response.setHeader("Cache-Control", "no-cache");19         response.setHeader("Pragma", "no-cahce");20         //通知客户机以图片方式打开发送过去的数据21         response.setHeader("Content-Type","image/jpeg");22         //在内存中创建一幅图片23         java.awt.image.BufferedImage image=new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);24         //向图片上写数据25         java.awt.Graphics g=image.getGraphics();26         //设置背景色27         g.setColor(Color.white);28         //设置矩形框29         g.fillRect(0,0,80,30);30         //设置背景色写入数据的字体和颜色31         g.setColor(Color.red);32         g.setFont(new Font(null,Font.BOLD,20));33         //向图片上写数据34         String nums=makeNums();35         request.getSession().setAttribute("checkcode", nums);36         g.drawString(nums, 0,20);37         //把写好的数据的图片输出给浏览器38         ImageIO.write(image, "jpg", response.getOutputStream());39     }40     private String makeNums() {41         java.util.Random r=new java.util.Random();42         String nums=r.nextInt(9999)+"";43         StringBuffer sb=new StringBuffer(nums);44         for(int i=0;i<4-nums.length();i++){45             sb.append("0");46         }47         return sb.toString();48     }49     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {50 51         this.doGet(request, response);52     }53 }

 

Session应用之验证码