package com.tan.guo; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 功能: * @author TanZi * @time 2015-4-11上午11:16:21 */ public class ImageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BufferedImage bi=new BufferedImage(68, 22, BufferedImage.TYPE_INT_RGB);//创建一个图片 Graphics g=bi.getGraphics(); //创建画笔 Color c=new Color(200,150,225); g.setColor(c); g.fillRect(0, 0, 68, 22); //设置画的位置 char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); //设置画的内容 Random r=new Random(); int len=ch.length,index; StringBuffer sb=new StringBuffer(); //用来保存生成的验证码字符 for(int i=0;i<4;i++){ index=r.nextInt(len); g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255))); g.drawString(ch[index]+"", (i*15)+3, 18); sb.append(ch[index]); } request.getSession().setAttribute("piccode", sb.toString()); //把生成的验证码字符放到session ImageIO.write(bi, "JPG", response.getOutputStream()); //写回图片 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
jsp上的编写:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> function reloadCode(){ var time=new Date().getTime(); document.getElementById("imagecode").src="<%=request.getContextPath()%>/servlet/ImageServlet?d="+time; } </script> </head> <body> 验证码:<input type="text" name="checkcode"/> <img alt="验证码" id="imagecode" src="<%=request.getContextPath()%>/servlet/ImageServlet"/> <a href="javascript:reloadCode();">看不清</a> <br> </body> </html>
时间: 2024-10-25 01:42:56