添加验证码的方法

引用

写一个CheckCodeServlet extends HttpServlet
package util;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CheckCodeServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//告诉浏览器,服务器返回的是图片。
		response.setContentType("image/jpeg");
		// 图片的内存映像
		BufferedImage image = new BufferedImage(60, 20,
				BufferedImage.TYPE_INT_RGB);
		Random r = new Random();
		Graphics g = image.getGraphics();
		g.setColor(
				new Color(r.nextInt(255), r.nextInt(255),
						r.nextInt(255)));
		g.fillRect(0, 0, 60, 20);
		g.setColor(new Color(0,0,0));
		String number = String.valueOf(r.nextInt(99999)); 
		HttpSession session = 
			request.getSession();
		session.setAttribute("number", number);
		g.drawString(number, 5, 15);
		// 压缩成jpeg格式
		//因为输出的是图片,必须使用字节流进行输出。
		OutputStream os = response.getOutputStream();
		JPEGImageEncoder encoder 
		= JPEGCodec.createJPEGEncoder(os);
		// 把BufferedImage对象中的图像信息编码后
		// 向创建该对象(encoder)时指定的输出流输出
		encoder.encode(image);
	}
}


web.xml配置
<servlet>
    <servlet-name>CheckCodeServlet</servlet-name>
    <servlet-class>util.CheckCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CheckCodeServlet</servlet-name>
    <url-pattern>/checkcode</url-pattern>
</servlet-mapping>

jsp页面调用
验证码:
<img src="checkcode" id="img1" />
<a href="javascript:;" onclick="document.getElementById('img1').src='checkcode?' + (new Date()).getTime();">换一个</a>
<input type="text" name="number" />
<span style="color:red;">${regist_err}</span>

你可能感兴趣的:(java,servlet,浏览器,OS,sun)