public class ImageServlet extends HttpServlet{ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置Content-type响应头 resp.setContentType("image/jpeg"); //设置http头,不允许客户端缓存验证码图片(单个是指针对某一个浏览器生效) resp.setHeader("pragma", "No-cache"); resp.setHeader("Cache-Control", "No-cache"); resp.setDateHeader("Expires", 0); //向客户端输出二进制数据 OutputStream out = resp.getOutputStream(); //以下代码用来生成验证码图片 int width = 80; int height = 20; BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); Graphics g = image.getGraphics(); g.fillRect(0, 0, width, height); g.setFont(new Font("Times New Roman",Font.ITALIC,18)); String checkCode= ""; Random random = new Random(); for(int i = 0; i < 4; i++){ String rand = String.valueOf(random.nextInt(10)); checkCode += rand; //随即设置数字颜色,增加识别验证码的难度,防止识别软件盗用使用 g.setColor(new Color(20+random.nextInt(110), 20+random.nextInt(110), 20+random.nextInt(110))); g.drawString(rand, i * 20 + 6, 16); } g.dispose(); //生成图片完毕 //将产生的验证码存Session中 req.getSession().setAttribute("checkCode",checkCode); ImageIO.write(image,"JPEG",out); }
直接调用Servlet就是....
<img src="testImageServlet" />