碎片化 | 第四阶段-41-struts2字节流生成验证码-视频

时间:2022-05-06
本文章向大家介绍碎片化 | 第四阶段-41-struts2字节流生成验证码-视频,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
视频内容

如清晰度低,可转PC网页观看高清版本:

http://v.qq.com/x/page/r056700jckx.html

验证码实现

需求:

在登录的页面,增加一个验证码
/image.do->filter控制器-> 拦截器处理->action->result->image

步骤:

1:完善login.jsp页面,添加验证码字段

    <input type="text" name="code"><img src="image.do"><span id="v_code"></span><br/>

2:配置struts.xml,----生成一张图片的action
    <!-- 验证码图片 -->
    <action name="image" class="imageAction">
        <result name="success" type="stream">
            <param name="inputName">imageStream</param>
        </result>
    </action>

3:写一个ImageAction----生成一张图片,并且,这张图片以字节流的形式传输到页面

    原生验证码生成:
        BufferedImage image = new BufferedImage(100,50,BufferedImage.TYPE_INT_RGB);//创建图片区域和图片色素
        Graphics graphics = image.getGraphics();//获取图片的画布
        graphics.setColor(Color.RED);//给当前画布设置前景色
        graphics.drawString("java11", 0, 50);//将“java11”字符画到画布上面

        ByteArrayOutputStream btouts = new ByteArrayOutputStream();//字节流输出对象
        ImageIO.write(image, "png", btouts);//将image图片写到输出对象
        //将图片赋值与imageStream
        byte[] btinp = btouts.toByteArray();//将输出字节对象转换为字节数组
        imageStream = new ByteArrayInputStream(btinp);//将字节数组写入到一个输入对象中

    工具类生成验证码:
        ValidateCode vc = new ValidateCode(100, 30, 3, 50);//创建验证码工具类
        imageStream = vc.getInputStream();//获取验证码的输入对象并赋值到imageStream