135-1821-9792

基于JSP实现数据库中图片的存储与显示

1、引言

员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供做网站、网站设计、微信公众号开发、电商网站开发,微信小程序,软件定制设计等一站式互联网企业服务。

数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态的显示图片,上述方法就不能满足需要了。我们必须把图片放入数据库存储起来,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。

2、建立后台数据库

假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。我们要存取的数据表结构的SQL脚本如下所示:

 
 
 
  1. if exists (select * from dbo.sysobjects where id =   
  2. object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1)  
  3. drop table [dbo].[picturenews]  
  4. GO  
  5. CREATE TABLE [dbo].[picturenews] (  
  6. [id] [int] IDENTITY (1, 1) NOT NULL ,  
  7. [image] [image] NULL ,  
  8. [content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,  
  9. [detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL   
  10. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  11. GO 

表picturenews中,字段id作为标识,每存储一行数据,自动增加1。字段image

用于存储图片信息,其数据类型为“image”。

3、向数据库存储二进制图片

启动Dreamweaver MX后,新建一个JSP文件。其代码如下所示。

 
 
 
  1. <%@ page contentType="text/html;charset=gb2312"%>   
  2.  
  3.  
  4. </font></strong>存储图片<strong><font> TITLE></font></strong> </li> <li><strong><font> HEAD></font></strong> </li> <li><strong><font><body></font></strong> </li> <li><font> </font> </li> <li><strong><font><FORM</font></strong> <font>METHOD</font>=<font>POST</font> <font>ACTION</font>=<font>"testimage.jsp"</font><strong><font>></font></strong> </li> <li>新 闻 标 题:<strong><font><INPUT</font></strong> <font>TYPE</font>=<font>"text"</font> <font>NAME</font>=<font>"content"</font><strong><font>><BR></font></strong> </li> <li>新 闻 图 片:<strong><font><INPUT</font></strong> <font>TYPE</font>=<font>"file"</font> <font>NAME</font>=<font>"image"</font><strong><font>><BR></font></strong> </li> <li>新闻内容:  </li> <li><strong><font><TEXTAREA</font></strong> <font>name</font>=<font>"txtmail"</font> <font>rows</font>=<font>"15"</font> <font>cols</font>=<font>"90"</font>   </li> <li><font>style</font>="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid;   </li> <li>BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;   </li> <li>HEIGHT: 200px; WIDTH: 100%" <font>wrap</font>=<font>"physical"</font> <strong><font>> TEXTAREA><br></font></strong> </li> <li><strong><font><INPUT</font></strong> <font>TYPE</font>=<font>"submit"</font><strong><font>> form></font></strong> </li> <li><strong><font> body></font></strong> </li> <li><strong><font> HTML></font></strong> </li> </ol></pre><p>将此文件保存为InputImage.jsp文件,其中testimage.jsp文件是用来将图片数据存入数据库的,具体代码如下所示: </p><pre><p> </p><pre> <ol> <li><strong><font><</font></strong>%@ page <font>contentType</font>=<font>"text/html;charset=gb2312"</font>%<strong><font>></font></strong>   </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.sql.*"</font> %<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.util.*"</font>%<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.text.*"</font>%<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.io.*"</font>%<strong><font>></font></strong> </li> <li><strong><font><html></font></strong>   </li> <li><strong><font><body></font></strong>   </li> <li><strong><font><</font></strong>%  </li> <li>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  </li> <li>//加载驱动程序类  </li> <li>Connection <font>con</font>=<font>DriverManager</font>.getConnection("jdbc:odbc:denglu","sa","sa");  </li> <li>//建立数据库联机,其中denglu为数据库名,sa为连接数据库的帐号及密码。  </li> <li>Statement <font>stmt</font>=<font>con</font>.createStatement();   </li> <li>//建立Statement对象  </li> <li>String <font>content</font>=<font>request</font>.getParameter("content");  </li> <li><font>content</font>=<font>new</font> String(content.getBytes("8859_1"),"gb2312");  </li> <li>String <font>filename</font>=<font>request</font>.getParameter("image");  </li> <li><font>filename</font>=<font>new</font> String(filename.getBytes("8859_1"),"gb2312");  </li> <li>String <font>detail</font>=<font>request</font>.getParameter("txtmail");  </li> <li><font>detail</font>=<font>new</font> String(detail.getBytes("8859_1"),"gb2312");  </li> <li>//获得所要显示图片的标题、存储路径、内容,并进行中文编码  </li> <li>FileInputStream <font>str</font>=<font>new</font> FileInputStream(filename);  </li> <li>String <font>sql</font>=<font>"insert into picturenews(content,image,detail) values(?,?,?)"</font>;  </li> <li>PreparedStatement <font>pstmt</font>=<font>con</font>.prepareStatement(sql);  </li> <li>pstmt.setString(1,content);  </li> <li>pstmt.setBinaryStream(2,str,str.available());  </li> <li>pstmt.setString(3,detail);  </li> <li>pstmt.execute();  </li> <li>//将数据存入数据库  </li> <li>out.println("Success,You Have Insert an Image Successfully");  </li> <li>%<strong><font>></font></strong> </li> </ol></pre><p><strong>4、网页中动态显示图片</strong></p><p>接下来我们要编程从数据库中取出图片,其代码如下所示。 </p><pre> <ol> <li><strong><font><</font></strong>%@ page <font>contentType</font>=<font>"text/html;charset=gb2312"</font>%<strong><font>></font></strong>   </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.sql.*"</font> %<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.util.*"</font>%<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.text.*"</font>%<strong><font>></font></strong> </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.io.*"</font>%<strong><font>></font></strong>   </li> <li><strong><font><html></font></strong> </li> <li><strong><font><body></font></strong> </li> <li><strong><font><</font></strong>%  </li> <li>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   </li> <li>//加载驱动程序类  </li> <li>Connection <font>con</font>=<font>DriverManager</font>.getConnection("jdbc:odbc:denglu","sa","sa");  </li> <li>Statement <font>stmt</font>=<font>con</font>.createStatement();  </li> <li>ResultSet <font>rs</font>=<font>null</font>;   </li> <li>//建立ResultSet(结果集)对象  </li> <li>int <font>id</font>= <font>Integer</font>.parseInt(request.getParameter("id"));  </li> <li>//获得所要显示图片的编号id,并转换为整型  </li> <li>String <font>sql</font> = <font>"select image from picturenews WHERE id="</font>+id+"";   </li> <li>//要执行查询的SQL语句  </li> <li><font>rs</font>=<font>stmt</font>.executeQuery(sql);  </li> <li>while(rs.next()) {  </li> <li>ServletOutputStream <font>sout</font> = <font>response</font>.getOutputStream();  </li> <li>//图片输出的输出流  </li> <li>InputStream <font>in</font> = <font>rs</font>.getBinaryStream(1);  </li> <li>byte b[] = new byte[0x7a120];  </li> <li>for(int <font>i</font> = <font>in</font>.read(b); i != -1;)  </li> <li>{  </li> <li>sout.write(b);   </li> <li>//将缓冲区的输入输出到页面  </li> <li>in.read(b);  </li> <li>}  </li> <li>sout.flush();  </li> <li>//输入完毕,清除缓冲  </li> <li>sout.close();  </li> <li>}  </li> <li>%<strong><font>></font></strong> </li> <li><strong><font> body></font></strong> </li> <li><strong><font> html></font></strong> </li> </ol></pre><p>将此文件保存为testimageout.jsp文件。下一步要做的工作就是使用HTML标记:</p><pre> <ol> <li><strong><font><IMG</font></strong> <font>src</font>="testimageout.jsp?id=<strong><font><</font></strong>%=rs.getInt("id<font>")%>"</font> <font>width</font>=<font>100</font> <font>height</font>=<font>100</font><strong><font>></font></strong> </li> </ol></pre><p>取出所要显示的图片,其中id是所要取出图片的编号。本例中我们输出了***个和***一个图片信息,详细的程序代码如下所示。 </p><pre> <ol> <li><strong><font><</font></strong>%@ page <font>contentType</font>=<font>"text/html;charset=gb2312"</font>%<strong><font>></font></strong>   </li> <li><strong><font><</font></strong>%@ page <font>import</font>=<font>"java.sql.*"</font> %<strong><font>></font></strong> </li> <li><strong><font><html></font></strong> </li> <li><strong><font><head></font></strong> </li> <li><strong><font><title></font></strong>动态显示数据库图片<strong><font> title></font></strong> </li> <li><strong><font> head></font></strong> </li> <li><strong><font><body></font></strong> </li> <li><strong><font><</font></strong>%   </li> <li>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  </li> <li>Connection <font>con</font>=<font>DriverManager</font>.getConnection("jdbc:odbc:denglu","sa","sa");  </li> <li>Statement <font>stmt</font>=<font>con</font>.createStatement();  </li> <li>String <font>sql</font>=<font>new</font> String();  </li> <li><font>sql</font>= <font>"select * from picturenews"</font>;  </li> <li>ResultSet <font>rs</font>=<font>stmt</font>.executeQuery(sql);  </li> <li>rs.last();  </li> <li>//将指针移至***一条记录  </li> <li>%<strong><font>></font></strong>   </li> <li><strong><font><table></font></strong> </li> <li><strong><font><tr><td><IMG</font></strong> <font>height</font>=<font>99</font> <font>src</font>=<font>"testimageout.jsp?id=1"</font> <font>width</font>=<font>136</font><strong><font>> td></font></strong> </li> <li>//取出***个图片  </li> <li><strong><font><td><IMG</font></strong> <font>height</font>=<font>99</font> <font>src</font>="testimageout.jsp?id=<strong><font><</font></strong>%=rs.getInt("id<font>")%>"</font> <font>width</font>=<font>136</font><strong><font>> td></font></strong> </li> <li>//取出***一个图片  </li> <li><strong><font> tr> table></font></strong> </li> <li><strong><font> body></font></strong> </li> <li><strong><font> html></font></strong> </li> </ol></pre><p>以上基于JSP实现数据库中图片的存储与显示的WEB应用程序在Windows 2000 Professional/SQL Server 2000/ Apache Tomcat 4.0/JDK 1.4 JAVA环境下调试通过。 </p> <br> 本文标题:基于JSP实现数据库中图片的存储与显示 <br> 标题网址:<a href="http://wtcwzsj.com/article/coecchh.html">http://wtcwzsj.com/article/coecchh.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/dpcehee.html">如何运用grep命令在Linux中快速查找文件内容?</a> </li><li> <a href="/article/dpcehcs.html">Win7系统如何快速搭建自己的Web服务器(win7建立web服务器)</a> </li><li> <a href="/article/dpcehsp.html">虚商号码可以过户吗?(目前网站无法打开请问是不是服务商把虚拟主机及域名过户给我的原)</a> </li><li> <a href="/article/dpcephe.html">(10 为什么电脑播放不了视频或音乐,总是提醒服务器运行失败?)</a> </li><li> <a href="/article/dpcehoh.html">上海市计算机一级和全国计算机一级有什么区别?上海windows</a> </li> </ul> </div> </div> <!-- end #bd --> <div class="c"></div> <!-- begin #fd --> <div id="fd" class="index-fd pr"> <div class="map-bg3"></div> <div class="wp"> <div class="fd-top"> <dl> <dt>关于我们</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/about#whous">我们是谁</a></li> <li><a href="http://www.wtcwzsj.com/about#ourcus">我们服务的客户</a></li> <li><a href="http://www.wtcwzsj.com/about#ourteam">我们的团队</a></li> </ul> </dd> </dl> <dl> <dt>我们的服务</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/service#webbuit">网站建设</a></li> <li><a href="http://www.wtcwzsj.com/service#weiweb">H5响应式 交互网站</a></li> <li><a href="http://www.wtcwzsj.com/service#webmobel">移动端 & 微网站定制</a></li> <li><a href="http://www.wtcwzsj.com/service#servweb">服务流程</a></li> <li><a href="http://www.wtcwzsj.com/service#solution">行业解决方案</a></li> </ul> </dd> </dl> <dl> <dt>网站建设案例</dt> <dd> <ul class="ul-fd"> <li><a href="http://www.wtcwzsj.com/case/">公司集团</a></li> <li><a href="http://www.wtcwzsj.com/case/">数码电子科技</a></li> <li><a href="http://www.wtcwzsj.com/case/">建筑与设计</a></li> <li><a href="http://www.wtcwzsj.com/case/">安防门禁</a></li> <li><a href="http://www.wtcwzsj.com/case/">管理咨询美容</a></li> <li><a href="http://www.wtcwzsj.com/case/">外贸行业</a></li> </ul> </dd> </dl> <dl> <dt>新闻动态</dt> <dd> <ul class="ul-fd"> <li><a href="/news/2.html">温岭网站建设</a></li><li><a href="/news/3.html">温岭网站制作</a></li><li><a href="/news/4.html">温岭网站设计</a></li> </ul> </dd> </dl> <dl> <dt>联系我们</dt> <dd class="pr"> <p><a href="http://www.wtcwzsj.com/news/" class="weixin"></a><a href="http://www.wtcwzsj.com/news/" class="sina"></a><span class="weixin-pic"><img src="/Public/Home/pic/ewm.jpg"></span></p> <p><b class="tel">135-1821-9792</b></p> <h5>公司服务热线</h5> </dd> </dl> </div> <div class="link"> 友情链接: <a href="http://www.bonnych.cn/" title="传统锅炉" target="_blank">传统锅炉</a>   <a href="http://www.cdxwcx.cn/tuoguan/xiyun.html" title="成都移动托管" target="_blank">成都移动托管</a>   <a href="http://www.kmruizhi.cn/" title="kmruizhi.cn" target="_blank">kmruizhi.cn</a>   <a href="http://www.jtfdjwf.com/" title="金堂柴油发电机" target="_blank">金堂柴油发电机</a>   <a href="https://www.cdxwcx.com/jifang/yaan.html" title="雅安服务器托管" target="_blank">雅安服务器托管</a>   <a href="http://www.gzxishu.com/" title="南充网站代运维" target="_blank">南充网站代运维</a>   <a href="http://www.sxpndq.cn/" title="普能电气" target="_blank">普能电气</a>   <a href="http://www.ynruijie.com/" title="成都公司注册" target="_blank">成都公司注册</a>   <a href="http://www.sffdjwx.cn/" title="什邡沃尔沃发电机出租" target="_blank">什邡沃尔沃发电机出租</a>   <a href="https://www.cdcxhl.com/google.html" title="Google外贸推广" target="_blank">Google外贸推广</a>    </div> </div> <div class="fd-copy"> <div class="wp"> <p><span style="color:#CCCCCC;">Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有</span> <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow" style="color:#CCCCCC;">蜀ICP备19037934号</a></p> </div> </div> </div> <div class="side"> <ul> <li><a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" target="_blank"> <div class="sidebox"><img src="/Public/Home/pic/side_icon02.png">在线咨询</div> </a></li> <li><a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" target="_blank"> <div class="sidebox"><img src="/Public/Home/pic/side_icon01.png">在线咨询</div> </a></li> <li><a href="tel:135-1821-9792"> <div class="sidebox"><img src="/Public/Home/pic/side_icon03.png"><span style="font-size:14px">135-1821-9792</span></div> </a></li> </ul> </div> <div class="side2"> <ul> <li><a href="http://www.wtcwzsj.com/news/"><img src="/Public/Home/pic/r_icon1.png" alt="温岭网站建设"></a> <div class="weixin"><em></em><img src="/Public/Home/pic/ewm.jpg" alt="温岭网站建设"></div> </li> <li><a href="javascript:goTop();" class="sidetop"><img src="/Public/Home/pic/r_icon2.png"></a></li> </ul> </div> <div class="fot"> <ul> <li> <a href="https://p.qiao.baidu.com/cps/mobileChat?siteId=11284691&userId=6256368&type=1&reqParam=%20{%22from%22:0,%22sessionid%22:%22%22,%22siteId%22:%2211284691%22,%22tid%22:%22-1%22,%22userId%22:%226256368%22,%22ttype%22:1,%22siteConfig%22:%20{%22eid%22:%226256368%22,%22queuing%22:%22%22,%22siteToken%22:%226ce441ff9e2d6bedbdfc2a4138de449e%22,%22userId%22:%226256368%22,%22isGray%22:%22false%22,%22wsUrl%22:%22wss://p.qiao.baidu.com/cps3/websocket%22,%22likeVersion%22:%22generic%22,%22siteId%22:%2211284691%22,%22online%22:%22true%22,%22webRoot%22:%22//p.qiao.baidu.com/cps3/%22,%22bid%22:%22160142915792139572%22,%22isSmallFlow%22:0,%22isPreonline%22:0,%22invited%22:0%20},%22config%22:%20{%22themeColor%22:%224d74fa%22%20}%20}&appId=&referer=&iswechat=0&expectWaiter=-1&openid=null&otherParam=null&telephone=null&speedLogId=null&eid=null&siteToken=6ce441ff9e2d6bedbdfc2a4138de449e" target="_blank"> <img src="/Public/Home/pic/fot1.png" alt=""> <p>在线咨询</p> </a> </li> <li> <a href="tel:18980820575" target="_blank"> <img src="/Public/Home/pic/fot2.png" alt=""> <p>拨打电话</p> </a> </li> </ul> </div> <script type="text/javascript" src="/Public/Home/pic/jquery.js"></script> <script type="text/javascript" src="/Public/Home/pic/lib.js"></script> </body></html> <script> $(".con img").each(function(){ var src = $(this).attr("src"); //获取图片地址 var str=new RegExp("http"); var result=str.test(src); if(result==false){ var url = "https://www.cdcxhl.com"+src; //绝对路径 $(this).attr("src",url); } }); window.onload=function(){ document.oncontextmenu=function(){ return false; } } </script>