a19892213 2019-04-12 13:55 采纳率: 0%
浏览 1233
已采纳

JS图片验证码换一张不显示

开始能显示](https://img-ask.csdn.net/upload/201904/12/1555048415_771910.jpg)

点击换一张

代码

验证码
name="checkcode" placeholder="验证码">


class="verifyimg"
src="${pageContext.request.contextPath}/UserServlet?method=CheckCode" />
换一张

            function changeImg() {
    var img = document.getElementById("imgId");
    img.src = "${pageContext.request.contextPath}/UserServlet?method=CheckCode?" + new Date();
}

后台代码
public void CheckCode(HttpServletRequest req, HttpServletResponse resp) throws IOException {

    // 使用java图形界面技术绘制一张图片

    int charNum = 4;
    int width = 30 * 4;
    int height = 30;

    // 1. 创建一张内存图片
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    // 2.获得绘图对象
    Graphics graphics = bufferedImage.getGraphics();

    // 3、绘制背景颜色
    graphics.setColor(Color.YELLOW);
    graphics.fillRect(0, 0, width, height);

    // 4、绘制图片边框
    graphics.setColor(Color.BLUE);
    graphics.drawRect(0, 0, width - 1, height - 1);

    // 5、输出验证码内容
    graphics.setColor(Color.RED);
    graphics.setFont(new Font("宋体", Font.BOLD, 20));

    // 随机输出4个字符
    Graphics2D graphics2d = (Graphics2D) graphics;
    String s = "ABCDEFGHGKLMNPQRSTUVWXYZ23456789";
    Random random = new Random();
    // session中要用到
    String msg = "";
    int x = 5;
    for (int i = 0; i < 4; i++) {
        int index = random.nextInt(32);
        String content = String.valueOf(s.charAt(index));
        msg += content;
        double theta = random.nextInt(45) * Math.PI / 180;
        // 让字体扭曲
        graphics2d.rotate(theta, x, 18);
        graphics2d.drawString(content, x, 18);
        graphics2d.rotate(-theta, x, 18);
        x += 30;
    }

    // 6、绘制干扰线
    graphics.setColor(Color.GRAY);
    for (int i = 0; i < 5; i++) {
        int x1 = random.nextInt(width);
        int x2 = random.nextInt(width);

        int y1 = random.nextInt(height);
        int y2 = random.nextInt(height);
        graphics.drawLine(x1, y1, x2, y2);
    }

    // 释放资源
    graphics.dispose();

    // 图片输出 ImageIO
    ImageIO.write(bufferedImage, "jpg", resp.getOutputStream());

}
  • 写回答

3条回答

  • 1进击的小白 2019-04-12 14:35
    关注

    给url带一个随机数

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

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况