在页面上写一个验证码

时间:2022-07-28
本文章向大家介绍在页面上写一个验证码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.首先导入jar包

2.servlet代码

package com.itqf.controller;

import cn.dsna.util.images.ValidateCode;

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.io.IOException;

/**
 * zt
 * 2020/9/14
 * 22:15
 */
@WebServlet(value = "/img")
public class ImageServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ValidateCode validateCode = new ValidateCode(100, 30, 4, 30);
        String code = validateCode.getCode();
        validateCode.write(response.getOutputStream());
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

3.jsp代码

<%--
  Created by IntelliJ IDEA.
  User: 49841
  Date: 2020/9/14
  Time: 22:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
<h2>欢迎登录</h2>
<h2>呱?!,当前登录用户</h2>
<img src="${pageContext.request.contextPath}/img">
</body>
</html>

4.或者将那个输出验证码的代码换成另一个

就是

validateCode.write(response.getOutputStream());

换成

ImageIO.write(validateCode.getBuffImg(), "jpg", response.getOutputStream());
//其实底层代码都是一样的:validateCode.write(response.getOutputStream());的底层代码就是
public void write(OutputStream sos) throws IOException {
            ImageIO.write(this.buffImg, "png", sos);
            sos.close();
        }

结果: