jsp Graphics动态验证码图片在页面显示乱码

weixin_44162722 2020-11-29 03:37:10
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.util.Random" %>
<%@ page import="javax.imageio.ImageIO" %>
<%@ page language="java" pageEncoding="UTF-8" %>
<%@ page contentType="text/html; charset=UTF-8"%>

<html>
<head>
<title>Title</title>
</head>
<body>
<%

//在内存中创建图像
response.setHeader("Cache-Control","no-cache");
int width=60,height=20;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

//获取画笔
Graphics g = image.getGraphics();

//设定背景色
g.setColor(Color.BLACK);
g.fillRect(0,0,width,height);

//取随机产生的验证码(4位数)
Random rnd = new Random();
int randNum = rnd.nextInt(8999)+1000;
String randStr = String.valueOf(randNum);

//将验证码存入session
session.setAttribute("randStr",randStr);

//将验证码显示到图像中
g.setColor(Color.BLACK);
Font font = new Font("", Font.PLAIN, 12);
g.setFont(font);
g.drawString(randStr,10,17);
for(int i=0;i<100;i++){
int x = rnd.nextInt(width);
int y = rnd.nextInt(height);
g.drawOval(x,y,1,1);
}

// 输出图像到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
out.clear();
out=pageContext.pushBody();
%>
</body>
</html>
...全文
2900 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小傻哥 2020-11-30
  • 打赏
  • 举报
回复 1
<%@ page contentType="text/html; charset=UTF-8"%> 这句解释一下。 网页中输出图片的数据,解析为文本,你告诉我为什么呢?

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧