验证码图片小记 (基于servlet与webflux)

1.生成随机验证码,存入session;

2.生成包含验证码的图片文件,并且响应给客户端;

3.基于原生servlet还是springmvc或者webflux都可以;

4.关键代码

4.1 验证码工具类(网上很多,不是关键)

4.2  session

基于servlet

//存入会话session

HttpSession session = request.getSession(true);

session.setAttribute(''key'', ''verifyCode'');

基于webflux(webSession使用参数注入)

webSession.getAttributes().put('key'', ''verifyCode'');

4.3 响应

基于servlet

response.getOutputStream()

基于webflux(Mono<Void>)

1.通过生成的图片文件读取响应

ZeroCopyHttpOutputMessage zeroCopyResponse = (ZeroCopyHttpOutputMessage) response;

return zeroCopyResponse.writeWith(file,positon,size);//进行文件流响应

这种方式或者说通过文件读取的方式的响应的方式,无法及时删除生成的文件

2.通过生成的图片文件然后获取对应的字节数组进行响应

//响应字节流 同时删除生成的图片文件

return response.writeWith(Flux.create(sink ->{

NettyDataBufferFactory nettyDataBufferFactory =new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));

try {

DataBuffer dataBuffer= nettyDataBufferFactory.wrap(toByteArray(file));

sink.next(dataBuffer);

}catch (Exception e) {

throw new RuntimeException(e);

}

sink.complete();

}));

这种方式的好处是在获取对应的图片文件字节数组后把图片文件删除toByteArray(file)方法里删除文件file

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • vcode.jsp <%@page import="com.yc.res.util.VerifyCodeUtils...
    Arance阅读 3,805评论 0 0
  • 一. Java基础部分.................................................
    wy_sure阅读 9,291评论 0 11
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 4,622评论 0 0
  • 炒股赔钱,好像天经地义矣。 #异趣#
    仇志飞阅读 1,436评论 0 0
  • “宁可一日无粮,不可一日无书”,这是中国的一句古训。是啊,书是人类的精神食粮,离开了书,人们的生活将是一片空白。今...
    FangFang放下自在阅读 1,679评论 1 3

友情链接更多精彩内容