EasyUI+SpringMVC+Mybaits 页面图片弹窗显示

项目中需要完成一个点击超链接弹出窗口,窗口中用于展示存放于数据库中的图片这样的功能;

# 准备工具:

环境:

Eclipse 4.3

jdk1.7.0_72

apache-maven-3.0.4

apache-tomcat-7.0.53

spring-mvc-4.0

spring-beans-4.0

mybatis-3.2.8

oracle 11.2.0.3.0

# 基本思路(按照数据流向分析):

------------------------

后台:

  >>> 首先从数据库中获取一个带BLOB字段的applyprocess实例;

  >>> 通过BLOB字段自身的方法获取一个输出流;

  >>> 通过bufferoutputstream实例的write方法将流输出到缓冲区中;

  >>> 通过flush方法将缓冲区中的流刷到页面上;

------------------------

前台:

  >>> 通过jquery的$.post()方法调起后台获取输出流;

  >>> 获取到的输出流为一个对象,需要再次遍历其中的对象,并获取到输出流;

  >>> 获取到输出流按照对象的prosn拼接出图片的显示路径;

  >>> 在一个div节点下面添加图片路径节点;

<div id="mpic">
    <img src="http://192.168.24.9:8281/acctSettlement/rfcheck/printImage?prosn=20150901100501" width="100%" height="100%">
    <br>
    <hr>
    <br>
</div>

# 代码部分:

# Controller.java

 1 @RequestMapping(value = "/printImage", method = RequestMethod.GET)
 2     public void printImage(Long prosn, HttpServletResponse response) {
 3         AReFundApplyProcess annex = aReFundApplyCheckService
 4                 .queryAnnexByProsn(prosn);
 5         InputStream in = null;
 6         try {
 7             in = ((Blob) annex.getContent()).getBinaryStream(); //这里获取content节点是因为mapper中的resultMap中将这个返回类型配置成了BOLB
 8         } catch (SQLException e) {
 9             e.printStackTrace();
10         }
11         try {
12             BufferedOutputStream bos = new BufferedOutputStream(
13                     response.getOutputStream());
14             int n;
15             while ((n = in.read()) != -1) {
16                 bos.write(n);
17             }
18             bos.flush();
19             bos.close();
20         } catch (IOException e) {
21             log.info("显示退款申请资料图片异常");
22         } finally {
23             try {
24                 in.close();
25             } catch (IOException e) {
26                 log.info("输出流关闭失败");
27             }
28         }
29     }

这里可以看到,在第七行的时候已经通过pojo的get方法获取到保存的blob对象,即存放在数据库中图片;

获取到 inputstrem之后即可通过 response的 getOutpstream方法将对象输出到内存中,虽然具体原理有待考证,不过目前功能实现是这样的;

  > 知识点记录:response的getOutputstream方法,以及Java中IO体系相关;

最终将获取到的输出流通过flush方法刷出到页面上;

java代码在这一步就完成了,这个功能最大的问题是在于如何从页面中获取到内存中的图片;

# page.jsp 代码

 1 <a id="searchBut" href="#" class="easyui-linkbutton" data-options="iconCls:‘icon-search‘">
 2 查看
 3 </a>
 4
 5 functions showImg(){ //这个方法在点击查看按钮时调用;
 6
 7 $.post("<%=basePath%>rfcheck/queryRefundApplyAnnex",
 8     {"applyid":applyidVar},
 9     function(data){
10         $("#searchBut").click(function(){
11             $("#mpic").html("");
12             var mdata = data;
13                 $(mdata.rows).each(function(i, elem){
14                 var url = "<%=basePath%>rfcheck/printImage?prosn="+elem.prosn;
15                 var img = "<img src=‘"+url+"‘ width=‘100%‘ height=‘100%‘/>";
16                 $("#mpic").append(img);
17                 $("#mpic").append("<br/><hr/><br/>");
18                 });
19                 $(‘#imageWindow‘).window(‘open‘);
20         });
21     },"json");
22
23 }

可以看出,这里通过循环遍历的方式依次获取到了内存中的图片对象,并将其拼接成了一个路径用于在弹出窗口中显示;

时间: 2024-11-02 10:01:53

EasyUI+SpringMVC+Mybaits 页面图片弹窗显示的相关文章

TERSUS画画一样开发软件 显示元件介绍-子页面及弹窗显示元件

TERSUS无代码手机电脑管理类软件开发,其中窗口类显示元件包括:子页面元件(Page Dialog).弹窗显示元件(Modal Dialog) 子页面元件(Page Dialog):是手机和平板移动端设计时所用到的新页面元件,移动端是由各个页面所组成的,在按钮等元件中放置一个页面,前端用户在点击按钮时,就会以新的页面覆盖旧页面,首页中,可以并列显示多个页面,如下: 1.页面元件一般有个头部和主内容区,头部中也有默认元件,所有元件,包括页面元件都可以单独定义显示样式"html.style&quo

fancybox图片弹窗显示插件跳到页面顶部问题

最近发现一个使用fancybox插件显示图片时页面自动跳转至顶部的问题. 问题原因:一开始html高度为100%;: 当点击图片是调用fancybox插件显示图片的时候会给html添加一个overflow:hidden的属性 解决办法: $('.image').fancybox({ padding:0, helpers:{ overlay:{ locked:false } } });

jquery实现页面按条件显示图片

function lazyload(option){ var settings={ defObj:null, defHeight:0 }; settings=$.extend(settings,option||{}); var defHeight=settings.defHeight,defObj=(typeof settings.defObj=="object")?settings.defObj.find("img"):$(settings.defObj).fin

html2canvas页面截图图片不显示

前两天在一个群里,有人问使用html2canvas屏幕截图的时候为什么页面的图片不显示只显示了文字,我没有做过屏幕截图的需求,所以不是很清楚,今天稍稍测试了一下. 在github上将html2canvas源码下载到本地,examples文件夹里有三个示例demo,这三个demo都是纯文字不包含图片的,前两个demo是打开之后直接就生成图片展示出来了,第三个是一个按钮触发生成,这里使用第三个demo来修改进行测试. 一.这是初始页面,上面带有背景颜色的是要截取的部分(id名为'content'),

SpringMVC生成的验证码图片不显示

近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Controller public class ValidateCodeController { private static final long serialVersionUID = 1L; private static int WIDTH = 70; // 验证码图片的宽度 private static i

EasyUI + SpringMVC 解决静态资源访问

我们的项目用的是EasyUI+SpringMVC+EJB+JPA,分享一下项目中遇到的一些问题及其解决方法.前台用的EasyUI,页面中引入了easyUI的js与css(引入路径正确),但是无论如何都显示不出来,如下图: EasyUI的样式没有,看控制台:警告,找不到 21:26:25,643 WARN [org.springframework.web.servlet.PageNotFound](http-localhost/127.0.0.1:8080-1) No mapping found

java springmvc mybaits maven shiro mysql整合

1. 导出 导入 excel 文件 2  导出word文件 3. IO 流上传下载文件 4. 群发邮件,可以发html.纯文本格式,可以发给任意邮箱(实现批量发送广告邮件) 5. 群发or单独 发送短信,支持两种第三方短信商接口 6. spring   aop  事物处理 7. 代码生成器 (freemarker), 代码 zip 压缩打包 8. MD5加密 SHA加密(登录密码用此加密)接口加密身份校验 9. 数据库连接池  阿里的 druid.Druid在监控.可扩展性.稳定性和性能方面都有

【最新】最流行的java后台框架 springmvc mybaits 集代码生成器 SSM SSH 项目源码

获取[下载地址]   QQ: 313596790   [免费支持更新]A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势C 安全权限框架shiro ;  Shiro 是一个用

springmvc mybaits mysql oracle shiro ehcache HTM5 bootstrap 全部源码 微信远程控制

开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术  [金牌]获取[下载地址]   QQ: 313596790A 代码生成器(开发利器);     增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid;  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都