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>
<

posted on 2017-06-19 15:43  青青兮  阅读(250)  评论(0)    收藏  举报