详解Java读取本地文件并显示在JSP文件中

当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片。其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相对路径,还可以是网络上的图片路径。在存取少量图片的情况下,采用相对路径存储图片的情况下最方便,也最实用。但是当图片数量过多时,这种方式就显的有些掣肘了。

当系统的图片数量过多时,如果仍把这些图片当做项目的一部分去发布,势必会大大延长项目的发布时间及更新时间。对于某些对于时限性要求特别高的系统来说,采用相对路径存储图片就是不可取的。特别是系统发布补丁时,只能采用增量的方式去更新系统。如果采用覆盖的方式发布系统,就可能会造成系统图片文件的丢失。

基于以上种种原因,很多系统会把大量的图片存在服务器的固定目录下,这样搭建集群环境时,就能访问公共的资源,避免对硬盘空间的浪费,但是问题也就在这里出现了。我们发布好的系统访问磁盘上的固定目录下的图片时,出现了没有权限访问的提示。系统为了保证本地安全,不允许直接访问图片。

咋一看,上面的问题有的不可思议。但仔细想想,系统这么做,也确实有道理的。在服务器上,部署了很多个系统应用。不可能有一个系统的访问权限,就可以随随便便的访问磁盘上的文件。事实上,服务器上的系统是有权限读取其它磁盘路径下的文件,只是没有办法让它显示而已。

要解决上面的问题,我们可以使用流的方式把图片读取出来,然后再输出显示到HTML页面中。

具体的代码见下面:

上传图片

$(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");

}

}

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;

}

以上就是java 读取本地文件并显示的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java访问本地文件_详解Java读取本地文件并显示在JSP文件中相关推荐

  1. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  2. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  3. java 线程一直运行状态_详解JAVA 线程-线程的状态有哪些?它是如何工作的?

    线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在. 一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源.更加轻量化,也因 ...

  4. java的注解方式_详解Java注解的实现与使用方法

    详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...

  5. java集合for循环_详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...

  6. java 配置文件配置路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设置. 那么我们需要读取配置文件, ...

  7. java使用集合存储过程_详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 发布于 2020-5-1| 复制链接 摘记: 详解java调用存储过程并封装成map           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大 ...

  8. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  9. java注解 源码_详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06   作者:佚名   我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...

最新文章

  1. html5 graphics with svg css3,HTML5 GRAPHICS WITH SVG AND CSS3
  2. 「机器学习速成」数据预处理,特征工程,良好特征的特点
  3. Fast Flux技术——本质就是跳板,控制多个机器,同一域名指向极多的IP(TTL修改为0),以逃避追踪...
  4. Python爬虫(十)_XPath与lxml类库
  5. mknod创建设备(加载新的设备驱动时候,通常会用到此命令)
  6. 每天学一点儿shell:vi和vim命令使用
  7. 【数据分析学习】线性降维方法
  8. DB排行榜更新,.NET Core+MySQL成主流!
  9. bson json c语言,对比平台--JSON和BSON之间的区别
  10. 同步与异步阻塞与非阻塞
  11. 玩转 SpringBoot 2 快速整合 Filter
  12. 微软给中国学生的特权:免费使用微软软件
  13. python 移动文件 覆盖_python 剪切移动文件的实现代码
  14. 中华之剑,禁毒纪录片,已转码支持流媒体播放,欢迎下载、欢迎传播
  15. php 蓝奏网盘上传文件,蓝奏云盘客户端v2.6 支持文件夹和大文件上传了
  16. poi操作ppt图表史上最完整示例演示
  17. Python实现的某市近几十年降雨量影响因素分析
  18. SCAU 计算智能 18118 勇者斗恶龙
  19. 桌面Linux下分区建议方案
  20. 计算机配件及其参数,型号后缀看不懂 电脑核心硬件参数解读

热门文章

  1. HDFS写入HBase
  2. 《长安十二时辰》利用大数据破案?
  3. 传感器的定义、构成、分类
  4. java redis监听问题_springboot+redis过期事件监听实现过程解析
  5. 美赛整理之Matlab的工程数学计算学习笔记(高等数学)
  6. python报表自动化系列 - 计算某年某个月的天数
  7. react 把前后台的axios请求放在一起_可靠React组件设计的7个准则之SRP
  8. vue 秒转换为时分秒_三年级数学上册时分秒换算口诀(附重点习题)
  9. 最短路计数(松弛操作处理)
  10. windows平台oracle自动job,oracle删除oem中自动备份job