这是由Servlet和jsp代码生成的图片验证码
主要功能是可以实现在网页上生成一个图片验证码,通过点击事件可以进行动态的切换。
Servlet2.java文件
package MyServlet;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
@WebServlet(urlPatterns = "/Servlet2")
public class Servlet2 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建图片对象
BufferedImage image = new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB);
//创建画布对象
Graphics2D g = image.createGraphics();
//填充
g.setColor(Color.cyan);//选颜色
g.fillRect(0,0,200,100);//选择坐标轴和宽高
//生成随机数
String string="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPGRSTUVWXYZ";
StringBuffer buffer = rand(string);
//写入文字
g.setColor(Color.BLACK);
g.setFont(new Font("黑体",Font.ITALIC,64));
g.drawString(buffer.toString(),0,64);
g.drawLine(0,0,200,100);
g.drawLine(100,0,0,200);
//把图片内容输出相应
resp.setContentType("imag/png");//设置文件格式
ImageIO.write(image,"png",resp.getOutputStream());
}
private StringBuffer rand(String string) {
Random random = new Random();
StringBuffer buffer = new StringBuffer();
for(int i=0;i<4;i++){
buffer=buffer.append(string.charAt(random.nextInt(string.length())));
}
return buffer;
}
}
color1.jsp文件
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/1/12
Time: 14:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>color</title>
<script>
function fun1() {
document.getElementById("d").src="/Servlet2?a="+new Date().getTime();
}
</script>
</head>
<body>
<!-- http://localhost:8080/jsp/Servlet2-->
<!--http://localhost:8080-->
<img src="/Servlet2" id="d" onclick="fun1()">
</body>
</html>