目标:1.验证码 2.登录
一、验证码
验证码的实现主要依赖jdk的awt包下的Image类和Graphics2D类来实现
public class ValidCodeServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 创建图片
BufferedImage img = new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB);
// 获取输出流
ServletOutputStream os = resp.getOutputStream();
// 创建画布
Graphics2D gra= img.createGraphics();
// 设置画笔
gra.setColor(Color.white);
// 将图片填充为白色
gra.fillRect(0, 0, 200, 100);
// 验证码 存入list
List<Integer> validcode = new ArrayList<>();
// 获取随机验证码
Random ran = new Random();
for(int i=0;i<4;i++){
validcode.add(ran.nextInt(10));
}
HttpSession session = req.getSession();
session.setAttribute("code", ""+validcode.get(0)+validcode.get(1)+validcode.get(2)+validcode.get(3));
gra.setColor(Color.BLACK);
gra.setFont(new Font("宋体",Font.BOLD|Font.ITALIC,30));
for(int i=0;i<4;i++){
gra.drawString(""+validcode.get(i), i*40, 70);
}//使用支持给定格式的任意 ImageWriter写入图像到 ImageOutputStream 。
ImageIO.write(img, "jpg", os);
}
}
效果图 ----- 后期可以添加一些干扰项,加入横线或者污点
二、登录
创建响应的service类有一集servlet验证表单数据以及验证码