Day23--前后端分离项目中如何使用 Vue.js 和 Axios 加载 WebServlet 生成的验证码图片

Java集成图形验证码&前端Vue+Axios 阅读详情

在前后端分离的项目中,使用 Vue.js 作为前端框架,通过 Axios 向后端发送请求以获取验证码图片是一个常见的场景。本文将介绍如何在 Vue 项目中通过 Axios 从后端 WebServlet 获取验证码图片流,并将其加载到前端页面中。

1. 需求分析

在许多应用中,验证码用于防止自动化脚本进行恶意操作。验证码图片通常由后端生成,然后前端需要通过 API 获取并展示。我们假设后端使用 Java WebServlet 来生成验证码图片,并将其作为二进制数据流返回给前端。前端使用 Vue.js 进行页面展示,并通过 Axios 发送 HTTP 请求。

2. 后端 WebServlet 生成验证码图片

首先,在后端,我们需要一个 WebServlet 来生成并返回验证码图片。下面是一个简单的示例:

package service;
import cn.dsna.util.images.*;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/code")
public class code extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建了一个 ValidateCode 实例,传入四个参数:
        //第一个参数是验证码图像的宽度(500 像素)。
        //第二个参数是验证码图像的高度(200 像素)。
        //第三个参数是验证码字符的数量(4 个字符)。
        //第四个参数是干扰线的数量(100 条线)。
        ValidateCode validateCode = new ValidateCode(500,200,4,100);
        //拿到生成的验证码值
        String code = validateCode.getCode();
//将生成的验证码字符串存储到 session 中,键为 "code"
// 这样可以在后续的请求中验证用户输入的验证码是否正确
        HttpSession sessions = req.getSession();
        sessions.setAttribute("code",code);
        //将生成的验证码图像写入到响应的输出流中。
        // 验证码图像会被发送给客户端显示。
        validateCode.write(resp.getOutputStream());
    }
}

此 WebServlet 处理 /captcha 路径的 GET 请求,生成验证码图片并将其作为 PNG 格式的响应返回。

3. 前端 Vue.js 中使用 Axios 请求验证码

在前端,我们使用 Axios 来发送请求并获取验证码图片数据。假设我们在一个 Vue 组件中加载验证码:

<template>
  <div>
    <img :src="captchaUrl" @click="loadCaptcha" alt="验证码" />
    <p>点击图片刷新验证码</p>
  </div>
</template>

<script>

    import axios from 'axios';

    new Vue({
    data() {
    return {
    captchaUrl: '', // 用于存储验证码图片的URL
};
},
    methods: {
    loadCaptcha() {
    // 请求后端的验证码图片
    axios.get('/captcha', { responseType: 'blob' }) // 确保响应类型为 blob
    .then(response => {
    const url = URL.createObjectURL(response.data); // 将 blob 转换为 URL
    this.captchaUrl = url;
})
    .catch(error => {
    console.error("获取验证码失败:", error);
});
}
},
    mounted() {
    this.loadCaptcha(); // 初始化时加载验证码
}
});
</script>
4. 关键技术点解析
  • responseType: 'blob': 在 Axios 请求中设置 responseType 为 'blob',确保 Axios 将二进制数据作为 Blob 对象处理,这对于处理图片数据尤为重要。

  • URL.createObjectURL: 使用 URL.createObjectURL 方法将从后端获取的 Blob 数据转换为一个可供 <img> 标签使用的 URL。

  • 图片刷新: 当用户点击图片时,调用 loadCaptcha 方法重新请求验证码图片,从而实现验证码的刷新。

base64图片验证码实现——vue移动端开发 接口是这样的 axios请求函数 export const reqcaptcha = (url) => { return axios({ method: 'post', timeout: 1000 * 30, url: url, dataType: 'json' }).then(res => { return res.data })... 阅读详情

相关推荐

行政数据分析大屏实战:用Tableau从Excel到看板的完整搭建流程(含数据连接与字段计算避坑)

本文详细介绍了如何利用Tableau从Excel数据源搭建行政数据分析大屏的完整流程,涵盖数据准备、连接技巧、计算字段优化、看板设计及动态交互部署。通过五阶工作流,帮助用户高效处理多源异构数据,实现业务洞察与可视化呈现,提升行政数据分析效率。

weixin_29696711的博客 336

验证码——vue中后端返回的图片流如何显示

登录界面经常会有验证码,验证码的实现方式也有很多,我目前做过以下两种:1.调用接口获取验证码 + canvas画布渲染2.后端返回图片(数据流),前端显示这两种方式都比较简单,本次项目技术栈为:vue2.6 + axsio ,接下来一起看看把~以上就是今天要讲的内容,本文仅仅简单两种验证码的实现方式,当然还有其他的验证吗实现方式,感兴趣自己去看看把~

DW14687的博客 6937

西门子AI面试问答(STAR法则回答实例)

通过建立良好的沟通渠道、倡导透明和积极的沟通,并建立信任和共享目标的文化,我成功地改善了团队合作的氛围和效果。对于一些存在分歧和冲突的情况,我采用了积极的解决问题的态度,促进双方的沟通和理解,寻找共同的利益点和解决方案。我的成果得到了评委和观众的认可,并为我的学术发展和进一步的科学研究奠定了基础。首先,我主动与团队成员进行一对一的沟通,倾听他们的观点和意见,了解他们在合作中遇到的问题和需求。我还参加了学校组织的科学俱乐部和研究小组,与其他热衷科学的同学一起进行讨论和实验,加深我的理解和实践技能。

kashine的博客 7249

axios封装与使用-以生成图形验证码为例

本文通过生成图形验证码这一功能详细介绍了axios封装与使用的详细步骤。

m0_62300955的博客 808

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

XAX520_1314的博客 2488

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1721

获取后端返回的图形验证码

如果后端返回的直接就是一个图形,有以下几种方式展示。

lth002的博客 760

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 102

vue 从后端拿到验证码,点击更新验证码

验证码登录的实现思路 1.前端从后端拿到验证码图片 2.输入验证码进行登录 3.后端拿到验证码进行比对,正确登录成功。 // template <a-input style="width:60%" size="large" type="text" ...

BYH的博客 2822

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3001

华为嵌入式面试题及参考答案(持续更新)

异步是指在程序执行过程中,某些任务不需要等待立即完成就可以继续执行其他任务的过程。在计算机编程中,异步通常用于处理长时间运行的操作,如文件读写、网络通信等,以避免阻塞主线程。异步处理通常涉及到回调函数、事件循环、协程或未来的概念。使用宏定义来避免命名冲突。#else#endif堆和栈是计算机程序中用于存储数据的两种不同类型的内存区域。

大模型大数据攻城狮的专栏 2480

vue图片验证码

验证码

m0_57364615的博客 434

手把手教你学pcie--用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

MHD0815的博客 339

前后端分离项目中实现图形验证码

图形验证码在我们的日常生活中时经常用到的,一般用于用户的登录、注册等。图形验证码在互联网应用中的作用是提高安全性、防止滥用和保护用户隐私。它是一种简单而有效的人机验证技术,帮助保护系统和用户免受自动化攻击的影响。本次我们通过spring boot后端项目生成图形验证码,通过vue3前端项目来展示验证码;在vue3前端项目中新建一个Captcha.vue文件,用来展示图形验证码。新建一个spring boot后端项目,并引入hutool依赖,来提供图形验证码。

2301_78646673的博客 2749

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

记一个前端项目问题-图片验证码

后端接口获取图片 乱码

qq_43519848的博客 279

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Vue前端中从后端获取图片验证码

【代码】Vue前端中从后端获取图片验证码。

qq_53348178的博客 840

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

axios请求后端返回验证码图片,前端vue显示验证码图片

原文链接 https://blog.csdn.net/weixin_45817240/article/details/111589847 用axios请求后端接口,得到验证码图片,但前端无法直接显示验证码图片,这是因为后端返回的不是一个json字符串,而是一个文件流格式,需要前端转换成base64编码。 发送请求的接口: export function GetCaptcha (data) { return Axios对象({ url: '后端请求接口地址', meth

我的米饭 4664

vue-cli axios获取后台返回的图形验证码显示

data定义imgcodeUrl // 获取图片验证码 getCodeImg() { // this.time=1234567; this.time = Date.parse(new Date()); console.log("时间戳"); console.log(this.time); this.axios.get(conf.api_base_url + "/validateCode/create/" + this.time, { respo

enhenglhm的博客 1295

Vue笔记(十三)—— Vue axios 跨域登录 SpringSecurity 图片验证码 Session空问题解决

基本跨域问题: 后台改动: 不同框架不同版本多种方式,网上也各种方案,所以这里只说我的,我的项目是SpringBoot2.x+SpringSecurity,直接改动SpringSecurity ... // 请求伪造防护功能关闭 .csrf().disable() .cors() Vue改动: 详见Vue axios异步、跨域请求及proxyTable无效问题详解 进入正题: 问题场景: 通过跨...

成长笔记 1528

vue 表格 vxe-table 如何让下拉筛选弹窗根据屏幕自动更新位置

vxe-table 通过 filterConfig.transfer: true 将筛选面板渲染至 document.body,解决因容器 overflow: hidden 导致的面板裁剪问题。面板基于视口自动定位,空间不足时向上翻转,滚动与窗口缩放时动态更新位置,确保始终可见且不被遮挡。生效前提:列需配置 filterRender,表格需有固定高度或处于可滚动容器中。该配置为表格级设置,适用于所有启用了筛选的列。

chocolate2s的博客 245

前端登录页面的书写与验证(后端)

如果有该用户就登录成功跳转至主页,如果没有用户和密码错误就登录失败不跳转。(3)写后端代码,接受前端请求并返回数据(新建目录houduan,在houduan/index.js写入)(2)前端配置路由地址,方便登录成功后页面的跳转(在routers.js写入)输入admin和123456,就可以实现登录并跳转至主页(内容暂时没有写)了。(4)后端操作数据库拿数据(在houduan/login_bs.js写入)(1)前端代码(在login2.vue文件写入)先启动后端:在terminal终端输入以下命令。

weixin_46452278的博客 159

Vue 107 ,下篇:若依管理系统桌面端应用( Electron 桌面应用实战,Vue + Electron )

⭐本文基于若依Vue3项目,完整落地Electron桌面应用:通过自定义app://协议复刻生产Nginx路由规则,实现前端零改动;主进程注册特权协议,处理静态资源与API请求,解决白屏、Cookie失效等关键问题;使用electron-builder 26.18.0打包生成dir/portable/nsis/zip四类安装包;附图标生成脚本与配置详解。全程实测,交付即用,确保浏览器版与桌面版共享同一份产物,维护成本极低。

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 664

Pearson VUE怎么预约华为认证笔试?账号实名、考点选择与预约流程

华为认证笔试由Pearson VUE提供考试预约服务。想报名HCIA、HCIP或HCIE笔试,可以使用本人华为账号进入Pearson VUE的华为认证预约系统,核对身份信息后选择考试科目、考试中心和时间,再完成支付及订单提交。下面按照实际操作顺序说明。

SPOTO_2003的博客 202

【元宝搜索开发者征文大赛】用 Vue + Ele把元宝搜索的返回值做成“能点开检查的证据卡片”ment UI

本文提出将“用户信任AI结论”转化为前端组件问题:针对元宝搜索返回的嵌套JSON字符串型Pages,通过解析生成可标注可信度的证据卡片,实现“可信/存疑/过期”三态标记。前端负责证据可视化与用户交互,后端专注检索逻辑,代理层保障密钥安全。通过自定义时效分档、容错解析与可展开卡片设计,构建可验证的AI结论信任链,突破传统“输入框+结果列表”的局限。

weixin_43787161的博客 368

Razor 视图 + JavaScript + Vue/iView 组件实现的表格自定义列

本文介绍了如何在 Razor 视图项目中,通过 JavaScript 初始化 Vue 实例,并利用 iView Table 实现表格自定义列。该方案的要点是:服务端输出列定义和行数据,前端将列配置转换为响应式数据,用户通过勾选或拖拽控制列的显隐与顺序。通过本地存储保存用户偏好后,表格自定义列还能在多次访问中保持一致,提升系统的易用性。

qq_59041750的博客 280

Vue3——第 14 篇:生命周期钩子——从创建到销毁的全过程

Vue 3 生命周期钩子是组件在创建、挂载、更新、卸载等阶段自动执行的函数,提供精准控制时机。核心钩子包括 onMounted(DOM 操作与数据请求)、onUpdated(更新后处理)、onBeforeUnmount(资源清理)等。合理使用可优化性能、管理副作用,提升应用稳定性。

810cheng 268
上一篇: Day22--IO流知识简学
下一篇: Axios请求使用params参数导致后端获取数据嵌套
IT ·南栀
博客等级 码龄6年 415粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT ·南栀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值