碎片化 | 第四阶段-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

原文发布于微信公众号 - 码神联盟(lkchatspace)

原文发表时间:2017-10-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端小作坊

CSS3着重符及其fallback

在中文里面,我们一般会在文字下方加上圆形符号。在日语中会在文字上方加上小顿号。在CSS3中如下属性可以控制着重符号:

1002
来自专栏lonelydawn的前端猿区

一款不可多得的火柴时钟

? 火柴时钟 一款有意思的时钟玩具,原生代码编写,使用 CSS 渲染过渡动效,引入 base64 格式 data url 图片。 引用 <link rel=...

3027
来自专栏前端新视界

CSS 特殊属性介绍之 pointer-events

首先看一下 MDN 上关于 pointer-events 的介绍: CSS属性 pointer-events 允许作者控制特定的图形元素在何时成为鼠标事件的 t...

19310
来自专栏游戏开发那些事

【python游戏编程之旅】第一篇---初识pygame

本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。

1312
来自专栏哲学驱动设计

OEA 中 WPF 树型表格虚拟化设计方案

    最近用 OEA 做的仓库管理系统中,许多界面的都需要使用表格控件来显示数据。一是这些表格的列非常多,有的甚至达到了 200 列,而且一个模块的界面中可能...

2017
来自专栏游戏杂谈

利用threshold实现的遮罩引导

点击“开始引导”,则进入引导操作。除指定的按钮可以操作外,其它区域均不可点击。这种应用当新功能或是新产品上线后,用来引导用户来使用产品/功能,是十分有用的。fa...

981
来自专栏mathor

第六届蓝桥杯决赛B组C/C++——完美正方形

1635
来自专栏向治洪

微信小程序之picker组件

作为移动端的分发入口,微信小程序虽然没有当初期望的那么火,但是却是一个不能忽视的入口。撇开微信小程序对于腾讯生态的原因不说,微信小程序对于开发还是很方便的,特别...

72810
来自专栏偏前端工程师的驿站

CSS魔法堂:"那不是bug,是你不懂我!" by inline-block

前言  每当来个需要既要水平排版又要设置固定高宽时,我就会想起display:inline-block,还有为了支持IE5.5/6/7的hack*display...

2148
来自专栏deepcc

.clearfix:after的用法,清除浮动

2686

扫码关注云+社区

领取腾讯云代金券