img 显示response图片数据

2023-11-04

[url]http://blog.csdn.net/ykf69177/article/details/8655881[/url]

<script type="text/javascript">  
loadImg=function(){
document.getElementById("img").src="servlet/IdentityServlet?ts="+new Date().getTime();
}
</script>

<body>
<img src="servlet/IdentityServlet" id="img" onclick="loadImg()"/>
</body>



//想要返回图片的路径  
FileInputStream fis = new FileInputStream("/Users/kun/Desktop/ServerImage/lxj12345.jpeg") ;
//得到文件大小
int size = fis.available();
byte data[] = new byte[size] ;
fis.read(data) ;
fis.close();

//设置返回的文件类型
response.setContentType("image/jpeg");
OutputStream os = response.getOutputStream() ;
os.write(data);
os.flush();
os.close();



public class IdentityServlet extends HttpServlet {  

/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("image/jpeg"); //设置输出类型

String randomString = getRandomStr(); //获取随机字符串
request.getSession(true).setAttribute("randomString", randomString);

int width =100,height=30; //设置图片宽高

Color color = getRandomColor(); //背景色
Color reverse = getReverseColor(color); //反色,用于前景色

BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //创建一个彩色图片

Graphics2D graph = bi.createGraphics(); //获取绘图对象
graph.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16)); //设置字体
graph.setColor(color); //绘制颜色
graph.fillRect(0, 0, width, height); //绘制背景
graph.setColor(reverse); //绘制颜色
graph.drawString(randomString, 18, 20); //绘制随机字符串

/**
* 绘制噪音点
*/
for(int i = 0; i<100; i++){
graph.drawRect(random.nextInt(width),random.nextInt(height), 1,1);
}

ServletOutputStream out = response.getOutputStream(); //转换成JPEG格式
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); //编码器
encoder.encode(bi);

out.flush();
}

/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request,response);
}

public static char[] CHARS ={
//'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'0','1','2','3','4','5','6','7','8','9'}; //随机字符字典

private Random random = new Random(); //随机数对象

/**
* 获取6位随机数
* @return
*/
private String getRandomStr(){
StringBuffer buffer = new StringBuffer();
for(int i=0;i<6;i++){
buffer.append(CHARS[random.nextInt(CHARS.length)]);
}
return buffer.toString();
}

/**
* 获取随机的颜色
* @return
*/
private Color getRandomColor(){
return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
}

/**
* 返回某颜色的反色
* @param color
* @return
*/
private Color getReverseColor(Color color){
return new Color(255-color.getRed(),255-color.getGreen(),255-color.getBlue());
}
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

img 显示response图片数据 的相关文章

  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 奇迹mu修改服务器名,奇迹MU 红名设置调整方案说明

    尊敬的用户 经过与游戏制作方的沟通 已经确认本次游戏版本中红名设置突然调整的原因 由于韩国奇迹MU之外的所有服务器 国际服 日服 中国服务器等 将对红名设置进行统一设置 红名设置将恢复成为Season 8版本期间的模式 红名2阶段之后可以继
  • 使用JAVA连接MySQL,储存歌曲,图片,影片文件

    MySQL中创建数据表 存放歌曲等文件字节流 使用longblob字段类型 我这个只是演示所以就一个字段 如果想比较好的管理文件 不要这么搞 create dadabase ttest use ttest create table musi
  • 【stm32单片机基础】按键状态机实现长按和短按

    stm32单片机基础 按键状态机 文章目录 stm32单片机基础 按键状态机 前言 一 按键的消抖 二 按键状态机实现 0 状态机模式 1 单个按键检测 2 单个按键实现长按和短按 三 长按和短按测试示例 四 多按键检测 按键处理经典例程
  • openEuler20.03如何安装图形化界面

    需求描述 需要安装图形界面方便操作 详细步骤 1 安装ukui图形界面 字体库 root localhost yum install ukui y root localhost local yum groupinstall fonts y
  • 2021白盒测试常用工具介绍【建议收藏】

    白盒测试工具一般是针对代码进行测试 测试中发现的缺陷可以定位到代码级 根据测试工具原理的不同 又可以分为静态测试工具和动态测试工具 1 Jtest 是一个代码分析和动态类 组件测试工具 是一个集成的 易于使用和自动化的Java单元测试工具
  • js 在数组对象中模糊搜索(直接上代码)

    1 测试数据 学生对象数组 var students id 1 name 张三 age 14 id 2 name 李四 age 15 id 3 name 王五 age 17 id 4 name 赵六 age 18 2 查询操作 根据下标查询
  • 写论文的开源免费神器汇总

    科研办公学习的开源免费神器汇总 一 公式 1 Mathtype 是一款专业的数学公式编辑工具 理科生专用的工具 mathtype公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号 2 Mathpix Mathpix可以将图片 PDF
  • 非对称加密算法--RSA加密原理详解

    密码学是在编码与破译的斗争实践中逐步发展起来的 并随着先进科学技术的应用 已成为一门综合性的尖端技术科学 密码学发展史 在说RSA加密算法之前 先说下密码学的发展史 其实密码学的诞生 就是为了运用在战场 在公元前 战争之中出现了秘密书信 在
  • ETCD 简介 + 使用

    随着CoreOS和Kubernetes等项目在开源社区日益火热 它们项目中都用到的etcd组件作为一个高可用 强一致性的服务发现存储仓库 渐渐为开发人员所关注 在云计算时代 如何让服务快速透明地接入到计算集群中 如何让共享配置信息快速被集群
  • getPerspectiveTransform通过4对点确认透视变换矩阵的原理分析

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 图像透视变换 Perspective Transformation 的本质是将图像从一个几何平面投影到另一个几何平面 透视变换保证同一条
  • html禁止Input文本输入缓存的两种方法

    默认情况下大多数的浏览器都会缓存input输入框的值 当输入框获取焦点时缓存值就会出现 我们只能通过清除浏览器的缓存来清除输入框的缓存值 这里介绍两种去掉输入框缓存的方法 input 的属性autocomplete 默认为on 其含义代表是
  • matlab自带各种分类器的使用示例

    目前了解到的 MATLAB 中分类器有 K 近邻分类器 随机森林分类器 朴素贝叶斯 集成学习方法 鉴别分析分类器 支持向量机 现将其主要函数使用方法总结如下 更多细节需参考 MATLAB 帮助文件 设 训练样本 train data 矩阵
  • 二叉树的认识

    愚昧将使你达不到任何成果 并在失望和忧郁之中自暴自弃 达芬奇 目录 一 二叉树的概念 二 二叉树的特点 结构 三 三种特殊的二叉树 1 斜树 2 满二叉树 3 完全二叉树 四 二叉树的性质 五 二叉树的存储方式 1 顺序存储 2 链式存储
  • 【前端】Vue项目:旅游App-(2)TabBar:搭建TabBar、循环获取动态数据、相关工具封装

    文章目录 目标 代码与过程 静态html css 改成动态数据 效果 总代码 修改或新建的文件 tabbarData js tab bar vue load assets App vue 目标 有两种实现方式 把数据写死 静态 直接写在ht
  • DotNetZip知识系列:用来解压缩zip

    说明 这是 net平台可以使用的一个库 NuGet Gallery Package Downloads for DotNetZip 这是官方文档 About DotNetZip DotNetZip Documentation
  • 2022.03.06 mysql8拉链表-测试

    1 创建业务表并初始数据 drop table if exists mall user create table mall user uid bigint unsigned auto increment comment 用户唯一ID pri
  • shell快速迁移海量文件的两种方案

    最近遇到这样一个小需求 linux服务器上某个目录下有几百万个文件 导致各种操作不便 急需转移历史文件 保留90天 同时对转移到的目录下新建日期文件夹 按文件创建来存放文件 想到了两种解决方案 第一种直接按创建日期find 这样需检索整个目
  • 容器化部署dex适配openldap

    ldap LDAP 在OIDC流程中是用来做身份认证服务的 包括LDAP身份认证服务器 自己的第三方应用需要调用LDAP的客户端接口 用以访问LDAP服务器进行身份验证 作用 用户验证 用户管理 ldap它是用来做统一用户身份认证的 即 你
  • 电机磁链和反电势系数关系

    电机磁链和反电动势系数辨识 刚接触电机 不久 很容易就被绕晕了 磁链 空载相反电势幅值 电角频率 text 磁链 varphi frac text 空载相反电
  • img 显示response图片数据

    url http blog csdn net ykf69177 article details 8655881 url img src servlet IdentityServlet