public class CheckImgServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int width = 120;
int height = 40;
// 相当于一张画质 内存创建一个图片缓冲区
BufferedImage bufi = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 给图片缓冲区中写数据
// 画笔
Graphics g = bufi.getGraphics();
// 设置画笔的颜色
g.setColor(Color.WHITE);
// 修改图片的背景颜色
g.fillRect(0, 0, width, height);
g.setColor(Color.RED);
// 画边框
g.drawRect(0, 0, width - 1, height - 1);
String data = "QWERTYUPASDFGHJKLZXCVBNMqwertyupasdfghjkzxcvbnm0123456789";
int x = 10;
int y = 30;
// 定义一个随机数对象
Random r = new Random();
//定义一个StringBuilder ,用户保存给图片上写的数据
StringBuilder sb = new StringBuilder();
// 生成干扰线
for (int i = 0; i < 8; i++) {
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width),
r.nextInt(height));
}
//验证码图片中的数字和字母
for (int i = 0; i < 4; i++) {
// 设置画笔的颜色,让不同的字显示不同的颜色
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
// 设置字体大小
g.setFont(new Font("宋体", Font.ITALIC, 25));
int num = r.nextInt(data.length());
char ch = data.charAt(num);
sb.append(ch);
g.drawString( ch+ "", x, y);
x += 20;
}
//获取Session,把验证码图片上的数据保存在Session中
request.getSession().setAttribute("servletImg", sb.toString());
// 把图片缓冲区中的数据写到页面
ImageIO.write(bufi, "JPG", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="root" value="${pageContext.request.contextPath}" ></c:set>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<script type="text/javascript">
function _changImg(){
document.getElementById("img").src = "${root}/img?" + new Date().getTime();
}
</script>
</head>
<body>
<form action="${root}/registerServlet" method="post">
<input type="text" name="checkImg" />
<img style="cursor: pointer;" alt="" src="${root }/img" id="img" onclick="_changImg();"/>
<a href="javascript:void(0);" onclick="_changImg();">看不清,换一张</a>
</form>
</center>
</body>
</html>
web.xml 中的配置文件
<servlet>
<servlet-name>CheckImgServlet</servlet-name>
<servlet-class>cn.itcast.web.CheckImgServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckImgServlet</servlet-name>
<url-pattern>/img</url-pattern>
</servlet-mapping>
<
浙公网安备 33010602011771号