当前位置: 首页 > news >正文

Servlet案例下载文件,图片验证码

Servlet案例(下载文件,图片验证码)


实现图片下载,响应到浏览器中去(

设置响应的附件名
response.setHeader("Content-Disposition", "attachment;filename="+ UUID.randomUUID().toString()+".png");

//TODO:实现文件的下载操作
@WebServlet("/servlet5")
public class MyServlet5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //    TODO:设置字符编码为UTF-8
        response.setCharacterEncoding("UTF-8");
    //    TODO:设置响应头,告诉浏览器,使用什么字符集显示
        response.setContentType("text/html;charset=UTF-8");
        //TODO:设置响应的附件名
        response.setHeader("Content-Disposition", "attachment;filename="+ UUID.randomUUID().toString()+".png");
        //TODO:读取文件内容
        FileInputStream fileInputStream = new FileInputStream("D:\\桌面\\课程\\workspace\\web_02\\src\\main\\webapp\\1.png");
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = fileInputStream.read(bytes)) != -1) {
            //TODO:将文件内容写入到响应体中
            response.getOutputStream().write(bytes, 0, len);
        }
        fileInputStream.close();

    }

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

图片验证码(通过调用Hutool工具类)

@WebServlet("/servlet6")
public class MyServlet6 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //    TODO:实现验证码的功能
        // 自定义纯数字的验证码(随机4位数字,可重复)
        RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);
        LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
        lineCaptcha.setGenerator(randomGenerator);
        // 重新生成code
        lineCaptcha.createCode();
        // 输出图片流
        lineCaptcha.write(response.getOutputStream());
    }

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

通过html展示对应的验证码(<img id="codeImg" src="/web_02/servlet6" alt="图片验证码" onclick="changeCode()">

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图片验证码</title>
    <script>
        function changeCode(){
            let img= document.getElementById("codeImg");
            // 在重新设置src的时候,一定要加上时间戳,否则图片不会更新
            img.src="/web_02/servlet6"+"?"+new Date();
            // img.src="/web_02/servlet6";
        }
    </script>
</head>
<body>
    <form action="" method="post">
          用户名<input type="text" name="username"/>
          密码<input type="password" name="password"/>
          验证码<input type="text" name="code">
<!--        TODO:注意在设置对应的src地址的时候要把工件的根目录加上   -->
          <img id="codeImg" src="/web_02/servlet6" alt="图片验证码" onclick="changeCode()">
          </input>
    </form>
</body>
</html>
http://www.dtcms.com/a/94778.html

相关文章:

  • uni-app AES 加密
  • 密码学——知识问答
  • 【今日半导体行业分析】2025年3月27日
  • Python 练习项目:MBTI 命令行测试工具
  • 6.2、认证主要产品与应用
  • visual studio 指令安装Nuget包
  • 前后端常见模型以及相关环境配置介绍
  • 五、小白学JAVA-数组
  • java同时使用两个不同版本的jar包,基于maven-shade-plugin,非自定义类加载器方法
  • LeetCode讲解篇之456. 132 模式
  • 【Excalidraw画图】低成本搭建团队手绘白板工具:Excalidraw本地部署与远程流畅使用
  • 备赛蓝桥杯之第十六届模拟赛第1期职业院校组第四题:世纪危机(人口增长推算)
  • Unity映射计算器:使用平面投影
  • 第十二篇《火攻篇》:一把火背后的战争哲学与生存智慧
  • CentOS(最小化)安装之后,快速搭建Docker环境
  • 设计模式(创建型)-建造者模式
  • 《Python实战进阶》No36: 使用 Hugging Face 构建 NLP 模型
  • 【数据库事务、消息队列事务、Redis 事务、Spring 事务 详细分析】
  • 【新手初学】读取服务器敏感文件数据
  • Scavenge算法的优缺点问题
  • K8S学习之基础五十八:部署nexus服务
  • Android 问真八字-v2.1.7[看八字APP]
  • 系统调用 与 中断
  • 【零基础入门】一篇掌握Python中的字典(创建、访问、修改、字典方法)【详细版】
  • 数据结构之优先级队列
  • 【SQL Server数据库备份详细教程】
  • SpringSecurity Web安全配置:HttpSecurity与WebSecurityConfigurerAdapter
  • 树莓派(4B)使用教程-小白之路(NO.1)
  • 游戏引擎学习第185天
  • 02. Linux嵌入式系统学习笔记(二)(编写C程序进行文件操作、模块化编程makefile的使用)