Java读取本地文件(图片),并显示在JSP文件中_已有图片信息,java加js怎么使图加载到jsp中-程序员宅基地

技术标签: JAVA技术  

转载:http://genuinecx.blog.51cto.com/2890523/1282451

当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片。其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相对路径,还可以是网络上的图片路径。在存取少量图片的情况下,采用相对路径存储图片的情况下最方便,也最实用。但是当图片数量过多时,这种方式就显的有些掣肘了。
当系统的图片数量过多时,如果仍把这些图片当做项目的一部分去发布,势必会大大延长项目的发布时间及更新时间。对于某些对于时限性要求特别高的系统来说,采用相对路径存储图片就是不可取的。特别是系统发布补丁时,只能采用增量的方式去更新系统。如果采用覆盖的方式发布系统,就可能会造成系统图片文件的丢失。
基于以上种种原因,很多系统会把大量的图片存在服务器的固定目录下,这样搭建集群环境时,就能访问公共的资源,避免对硬盘空间的浪费,但是问题也就在这里出现了。我们发布好的系统访问磁盘上的固定目录下的图片时,出现了没有权限访问的提示。系统为了保证本地安全,不允许直接访问图片。
咋一看,上面的问题有的不可思议。但仔细想想,系统这么做,也确实有道理的。在服务器上,部署了很多个系统应用。不可能有一个系统的访问权限,就可以随随便便的访问磁盘上的文件。事实上,服务器上的系统是有权限读取其它磁盘路径下的文件,只是没有办法让它显示而已。
要解决上面的问题,我们可以使用流的方式把图片读取出来,然后再输出显示到HTML页面中。f废话了半天,下面关键的实现代码:
JSP页面的展示代码:<img name="person.personImg" id="personImg" alt="头像照片" src="${person.personImg}" style="width:160px;height:160px;border:1px solid" />

<button id="btnImg" class="btn btn-primary" type="button" title="上传图片"     $(function() {
     //读取头像照片
     if($("#oid").val()!=="")
     {
         $("#personImg").attr("src","favccxx/person/loadUserPhoto?externalPerson.oid="+$("#oid").val()+"&Time="+(new Date().getTime()));
         $("#personImg").css("display","");
         $("#btnImg").css("display","");
     }else{
         $("#personImg").css("display","none");
         $("#btnImg").css("display","none");       
     }
 }

</script>   
采用Struts2框架的java代码:   

@Action(value = "loadUserPhoto", results = { @Result(name = "success", type = "stream", params = {
         "contentType", "image/jpeg", "inputName", "imageStream" }) })
 public String getImage() {
     if (person.getOid() != null) {
         // 设置图片
         try {
             Person person = personService.findOne("oid", externalPerson.getOid());
             FileInputStream is = new FileInputStream(person.getPersonImg());
             imageStream = new BufferedInputStream(new FileInputStream(person.getPersonImg()));
         } catch (Exception e) {
         }
     }
     return SUCCESS;
 }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cyxinda/article/details/78254075

智能推荐

python之moviepy库的安装与使用_python中如何安装moviepy.editor-程序员宅基地

文章浏览阅读8.8k次,点赞3次,收藏28次。目的:因为需要保存一个大大的.mp4视频,以防过程中设备出现异常导致整个长长的视频无法正常保存,所以采用分段保存视频的方式,每500帧保存一段,然后再将视频合到一起.最近刚开始学习python,发现python真的很好用,所以这次就使用python中的moviepy库来完成视频的合并.一.安装moviepy1. 你首先尝试使用 pip install moviepy指令是否可以正常安装moviepy库(我在python2.7上和python3.7上都尝试了这中安装方式都安装不了,所以不得不采用下面这_python中如何安装moviepy.editor

npm ERR! syscall spawn git-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏3次。在进行npm install 时,有一个项目报下面的错误,其它项目没有报错,分析可能同git有关系,但是git又能正常使用。逐进到项目目录下面,直接使用git bash here这个窗口中,执行npm i,即可成功Lenovo@LAPTOP-DLK5GAMB MINGW64 /d/***/svnfile/dblzvue1$ npm inpm ERR! path gitnpm ERR! code ENOENTnpm ERR! errno ENOENTnpm ERR! syscall spawn _npm err! syscall spawn git

解决Tensorflow2.0出现:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'的问题-程序员宅基地

文章浏览阅读7.4w次,点赞71次,收藏111次。问题描述在使用tensorflow2.0时,遇到了这个问题:AttributeError: module ‘tensorflow’ has no attribute ‘get_default_graph’这个报错的意思是:tensorflow模块没有get_default_graph属性错误原因这是由于Keras API(https://keras.io/)有多个实现,包括原始和参考实..._attributeerror: module 'tensorflow' has no attribute 'get_default_graph

go语言支付宝支付代码_alipay_qzwt#0#bdt_260950542402ed4216b90387565797c4-程序员宅基地

文章浏览阅读3.9k次。func (this*UserController)HandleUserPay() { var appId=&amp;amp;amp;quot;2016091800541813&amp;amp;amp;quot; var aliPublicKey = &amp;amp;amp;quot;MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzBr/2fOq6vbfAKiIlR8zyAOV2uOMbyYouV/ScQjuNNAVj+D6RZEd_alipay_qzwt#0#bdt_260950542402ed4216b90387565797c468b35aa6a5759f7ad0d57b

世界上最好的c++ rpc实现基于c++14标准_buttonrpc github-程序员宅基地

文章浏览阅读1.3w次,点赞2次,收藏22次。代码量很少,就两个hpp文件,新手学习好材料。server:#include "buttonrpc.hpp"int foo(int age, int mm){ return age + mm;}int main(){ buttonrpc server; server.as_server(5555); server.bind("foo", foo); server.run()..._buttonrpc github

LTspice raw文件解析工具PyLTSpice-程序员宅基地

文章浏览阅读2k次,点赞5次,收藏12次。  如果我们能解析LTspice仿真生成的波形数据文件,即raw文件,就可以做很多后处理工作了。比如导入Matlab;做数据统计,画直方图(Histogram)等等。  Python就提供了这么一个工具,PyLTSpice。另外在Github上也能下载:Gihub仓库地址。  或者更直接的,装完Python后直接在线安装这个包:(拿Python3.8举例)  装完以后,打开cmd窗口,输入pip install PyLTSpice,回车即可:  另外,如果需要画图,会用到matplotlib包_pyltspice

随便推点

东芝mipi转LVDS芯片TC358775XBG调试-程序员宅基地

文章浏览阅读1.8w次,点赞3次,收藏14次。数据手册看,有2种控制方式,I2C或者MIPI直接控制,看了下,如果用I2C,mipi初始化时序还需要调整,太不方便,硬件上还要多占用一个I2C,这里直接用mipi控制接下来首先看时序:MSM8953平台,时序满足要求,在reset动作前添加个standby控制就可以了,还是比较简单的接下的mipi参数设置,模式选推荐的“sync_event”模式,参数用_tc358775

Linux Samba服务匿名配置只读共享及详细讲解_samba linux 和linux 只读-程序员宅基地

文章浏览阅读3.3k次。samba匿名共享1.修改samba服务配置:修改之前先备份配置文件:cp /etc/samba/smb.conf /etc/samba/smb.conf.default删除配置文件:rm -rf /etc/samba/smb.conf创建配置文件: vi /etc/samba/smb.conf​ (1). samba配置文件结构: 以 "节"为单..._samba linux 和linux 只读

关于springcloud中eureka报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException:_eureka exception starting filter [servletcontainer-程序员宅基地

文章浏览阅读486次。首先检查有没有导入eureka的启动器,eureka服务端导入的是一定是spring-cloud-starter-netflix-eureka-server,注意不要写成spring-cloud-starter-netflix-eureka-clienteureka: client: register-with-eureka: <dependency> <groupId>org.springframework.cloud</groupId>_eureka exception starting filter [servletcontainer] com.sun.jersey.api.conta

adobe acrobat pro dc 更新后正常体验使用_isamtenforced-程序员宅基地

文章浏览阅读2.3k次。adobe acrobat pro dc 更新后破解失效怎么解决?文章整理来源于网络,仅供参考和个人学习。[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Adobe\Adobe Acrobat\DC\Activation]“IsAMTEnforced”=dword:00000001注册表新增这个键值dword32类型,数值1。然后重新用AMTEmu0.9.2激活就行了AMT Emulator 0.9.2.exe 工具:链接:https://pan.baid_isamtenforced

k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)_svc port-forward-程序员宅基地

文章浏览阅读2.4k次。k8s使用port-forward访问集群中的应用程序本文描述了如何使用 kubectl port-forward 访问 Kubernetes 集群中的 Redis Server。这种连接方式在实际进行Debug时非常有效。为Redis创建Deployment和Service转发本地端口到Pod的端口总结为Redis创建Deployment和Service创建 Redis Deployment,YAML文件如下:apiVersion: apps/v1kind: Deployment_svc port-forward

记一次关于Fragment的内存泄漏_madded in fragmentstore 内存泄露-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏4次。之前使用单Activity多Fragment架构完成过一个项目,在后期维护时发现一个很严重的问题,很多页面在关闭之后,内存无法被回收,出现了内存泄漏问题。leakcanary显示信息如下:..._madded in fragmentstore 内存泄露

推荐文章

热门文章

相关标签