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

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


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


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


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

<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="上传图片" onclick="uploadPersonPic()">上传图片</button> <script>
$(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>

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读取本地文件,并显示在JSP文件中的更多相关文章

  1. java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)

    Java代码: File filePic = new File(path+"1-ab1.png"); if(filePic.exists()){ FileInputStream i ...

  2. js读取本地图片并显示

    抄自 http://blog.csdn.net/qiulei_21/article/details/52785191 js读取本地图片并显示 第一种方法比较好 版权声明:本文为博主原创文章,未经博主允 ...

  3. 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中

    1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...

  4. Java读取本地json文件

    背景 之前一直在弄一个Java爬虫,将爬取的信息保存到了数据库中.但这毕竟是一个课程设计,在设计前端GUI,展示数据的时候最开始是直接通过select语句从数据库中查找的,但我担心交给老师后,老师还要 ...

  5. JAVA读取本地html文件里的html文本

    /** * 读取本地html文件里的html代码 * @param file File file=new File("文件的绝对路径") * @return */ public s ...

  6. 安卓开发笔记(二十二):读取本地(内置)html文件并实现和Javascript交互

    实际上我们通常是使用WebView控件对本地html进行读取,这样就可以体会类似web app和安卓原生混合开发的乐趣了.在读取本地html并展示在前台的时候,并不需要在Androidmenifast ...

  7. SecureCRT文件和文件夹显示不同颜色(像linux中那样效果)

    如何设置secureCRT使用的他可以像linux文件和文件夹显示不同的颜色呢 原先显示效果如下: 效果图 配置

  8. Java读取本地文件进行unicode解码

    工具使用: package test.opservice; import eh.util.MapValueUtil; import java.io.BufferedReader; import jav ...

  9. Java读取本地文件(输入流)

    package cn.buaa; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; imp ...

随机推荐

  1. [置顶] NS2中TCP拥塞控制仿真过程中盲点解析

    最近利用NS2做TCP拥塞控制协议的仿真,发现很多变量的方法含义都是解释的不清楚,给核心模块修改带来很多麻烦,所以决定用最准确的语言解释成员变量.方法,术语等的含义.限于个人水平,若有错误请留言指正! ...

  2. sql: oracle, for update和for update nowait的区别

    1. oracle for update和for update nowait的区别 http://www.cnblogs.com/quanweiru/archive/2012/11/09/276222 ...

  3. AOP编程,spring实现及JDK,CGLIB实现

    什么是AOP? AOP(Aspect-OrientedProgramming,面向方面编程)和OOP(Object-Oriented Programing,面向对象编程)思想不同,两者并非对立关系,前 ...

  4. [Warning] Aborted connection 11203 to db: 'ide' user: 'nuc' host: 'prd01.mb.com' (Got an error writi

    PS:一台物理机扯分了3个虚拟机,一个主db,一个主备,一个从备. 切换到0301的时候 Sep  6 09:16:16 prddb0301 mysqld: 130906  9:16:16 [Warn ...

  5. python web with bottle and session (beaker)

    python web with bottle and session (beaker) http://icodesnip.com/snippet/python/python-web-with-bott ...

  6. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

    设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...

  7. EasyUI - Draggable 拖动控件

    效果: html代码: <div id="box" style="width: 400px; height: 200px; background-color: #f ...

  8. Servlet的学习之Request请求对象(2)

    在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...

  9. DELPHI 通過窗口句柄或窗口标题得到进程句柄

    DELPHI 通過窗口句柄或窗口标题得到进程句柄2009年05月08日 星期五 10:15procedure TForm1.Button1Click(Sender: TObject);varhWind ...

  10. SilkTest Q&A 11

    101. 如何从其他的机器访问脚本? 答案:将包含脚本的文件夹共享出来…非常简单…你可以使用connect()在你本机运行脚本从而使得它们在其他的一些机器上执行…但是其他人无法访问这些脚本,除非你将它 ...