JavaWeb-验证码案例
案例代码-创建验证码
java
@WebServlet("/checkCodeServlet")
public class checkCodeServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int width = 100;
int height = 50;
// 1. 创建对象,在内存中储存图片,即验证码图片对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 2. 美化图片
// 2.1创建画笔对象
Graphics g = image.getGraphics();
// 2.2 设置画笔颜色
g.setColor(Color.PINK);
// 2.3使用画笔设置填充色
g.fillRect(0, 0, width, height);
// 2.4 画边框
g.setColor(Color.BLUE);
g.drawRect(0, 0, width - 1, height - 1);
// 定义所有码的集合
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
// 生成随机角标
Random ran = new Random();
// 获取字符
for (int i=1;i<=4;i++){
int index = ran.nextInt(str.length());
char ch = str.charAt(index);
// 2.5写验证码
g.drawString(ch+"",width/5*i,height/2);
}
// -------------------2.6 画干扰线-------------------
g.setColor(Color.GREEN);
for (int i = 0; i < 10; i++) {
int x1 = ran.nextInt(width);
int x2 = ran.nextInt(width);
int y1 = ran.nextInt(height);
int y2 = ran.nextInt(height);
g.drawLine(x1,y1,x2,y2);
}
// -------------------画干扰线-------------------
// 3. 将图片输出到页面显示
boolean jpg = ImageIO.write(image, "jpg", resp.getOutputStream());
}}
效果:
说明: 上述的servlet可以作为img资源,即/checkCodeServlet可以作为验证码图片的资源,可以使用src引用。
模拟验证码点击刷新
思路: 点击超链接或验证码图片,请求这个servlet即会刷新图片。但要注意处理图片缓存问题。
register.html
$Title$
看不清,换一张?
效果: 使用火狐浏览器访问http://localhost:8086/day15/register.html的效果