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

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


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

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

java 复制代码
//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工具类)

java 复制代码
@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()">

java 复制代码
<!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>
相关推荐
sbjdhjd12 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
ywl47081208713 天前
springSecurity+jwt,简单版demo
java·前端·servlet
飞天狗11113 天前
零基础JavaWeb入门——第五课第一小节:九大内置对象 · 第1个:request(请求对象)
java·开发语言·前端·后端·servlet
飞天狗11114 天前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
未若君雅裁15 天前
责任链模式详解:从Servlet过滤器到订单创建流程
servlet·责任链模式
逢君学术论文AI写作16 天前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
逢君学术论文AI写作16 天前
Java第21课:JavaWeb入门——Tomcat+第一个Servlet
java·servlet·tomcat
就叫_这个吧16 天前
Java使用tomcat+servlet+filter实现简单的登录功能,需先登录再进行页面数据管理操作
java·开发语言·servlet·tomcat·jsp·filter
wangyadong31717 天前
rancher 安装jenkins 。国内镜像太头疼
servlet·jenkins·rancher
就叫_这个吧20 天前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web