Laughing girl2021 2021-07-15 12:14 采纳率: 100%
浏览 82
已采纳

javaweb练习,验证码切换不能显示网页图片。求解惑!

package com;

import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet(name = "VerifyCodeServlet", urlPatterns = "/code")
public class VerifyCodeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        int width = 100;
        int height = 30;
        String data = "abcdefghijklmncpqrst01234567890";
        //设立一个随机函数对象
        Random random = new Random();
        // BufferedImage是缓冲图像类,这里的意思是创建一个宽为width,高为height,不带透明色的图片对象;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //创建一个可绘制image的几何,坐标变换,颜色管理和文本布局的2D对象,此对象属于Graphics类;
        Graphics graphics = image.getGraphics();
        //调用graphics的方法在image对象里设置一个指定颜色(当前为灰色);
        graphics.setColor(Color.gray);
        //绘制image对象中灰色区域的范围,x,y为左上角坐标,width,height为右下角坐标,下行意思为灰色覆盖区域为image对象的左上角到右下角(全覆盖)
        graphics.fillRect(0, 0, width, height);

        //调用graphics的方法在image对象里设置一个指定颜色(当前为黑色);
        graphics.setColor(Color.black);
        for (int i = 0; i < 4; i++) {
            //取得data字符串里字符的随机位置;
            int position = random.nextInt(data.length());
            //调用String里的substring(int beginIndex, int endIndex),进行索引位置上的字符,beginIndex为开始位置,endIndex为结束位置(结束位置不包括在索引范围);
            String randomStr = data.substring(position, position + 1);
            //调用graphics类的方法使用当前颜色(黑色)绘制指定(randomStr)字符串给出的文本,x是字符串到图形左侧边框的距离,y是字符串到图形上边边框的距离
            graphics.drawString(randomStr, width / 5 * (i + 1), 15);

        }


        ImageIO.write(image, "jpg", response.getOutputStream());
    }

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

    }
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div align="center">
<h2>切换验证码</h2>

<script>
    function changeImageCode() {
        document.getElementById('btn').isDisabled=true;
        document.getElementById('identity').src='code?ts='+new Date().getTime();

    }

</script>
<image src="code"  id="identity" onload="btn.disable=false;" style="cursor:pointer; vertical-align:middle">

</image>
<input type="button" value="看不清,更换验证码" onclick="changeImageCode()" id="btn"  style="vertical-align:middle">
</div>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: pan
  Date: 2021/7/14
  Time: 12:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    HelloWorld
    </body>
    <div class="col-sm-3">
    <img src="${pageContext.request.contextPath}/code">
    </div>
</body>
</html>

  • 写回答

2条回答 默认 最新

  • 崽崽的谷雨 2021-07-15 13:19
    关注

    地址对吗?写死一个地址看能不能显示

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月19日
  • 创建了问题 7月15日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装