基于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> <p> 当前题目:<a href="http://www.shufengxianlan.com/qtweb/news13/28513.html">基于JSP实现数据库中图片的存储与显示</a> <br> 网站URL:<a href="http://www.shufengxianlan.com/qtweb/news13/28513.html">http://www.shufengxianlan.com/qtweb/news13/28513.html</a> </p> <p> 网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等 </p> <p class="adpic"> <a href="https://www.cdcxhl.com/service/ad.html" target="_blank" class="ad">广告</a> <a href="" target="_blank" class="adimg"><img src=""></a> </p> <p class="copy"> 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: <a href="https://www.cdcxhl.com/" target="_blank">创新互联</a> </p> </div> <div class="newsmorelb"> <p>猜你还喜欢下面的内容</p> <ul> <li> <a href="/qtweb/news12/28512.html">正确对VS2005安装说明</a> </li><li> <a href="/qtweb/news11/28511.html">网络平台怎样建立</a> </li><li> <a href="/qtweb/news10/28510.html">手机备案app密码忘了怎么办?(如何快速找回备案密码)</a> </li><li> <a href="/qtweb/news9/28509.html">创新互联Angular教程:Angular与AngularJS的概念对照</a> </li><li> <a href="/qtweb/news8/28508.html">Redis中读取的值非预期(redis读回来的值不对)</a> </li><li> <a href="/qtweb/news7/28507.html">MongoDB中的文档验证功能怎么使用</a> </li><li> <a href="/qtweb/news6/28506.html">Redis之热点底层探究(redis热点底层篇)</a> </li><li> <a href="/qtweb/news5/28505.html">html如何加载flv</a> </li><li> <a href="/qtweb/news4/28504.html">云服务器本地端口不通怎么解决</a> </li> </ul> </div> </div> <div class="col-lg-3 noneb"> <div class="bkright" style="margin-top: 0"> <p><a href="https://www.cdcxhl.com/news/jingtai/">静态网站知识</a></p> <ul> <li> <a class="text_overflow" href="/qtweb/news40/133790.html">使用Redis第三方监控实现数据可靠性(redis第三方监控)</a> </li><li> <a class="text_overflow" href="/qtweb/news16/294066.html">设置Linux系统双网卡设置的优势与挑战(linux系统双网卡)</a> </li><li> <a class="text_overflow" href="/qtweb/news8/376508.html">便宜的海外服务器一定要注意这些问题</a> </li><li> <a class="text_overflow" href="/qtweb/news48/279548.html">Linux下GZ文件压缩命令利器(linuxgz命令)</a> </li><li> <a class="text_overflow" href="/qtweb/news44/68644.html">法国房产网站设计</a> </li><li> <a class="text_overflow" href="/qtweb/news41/6541.html">EDM营销话术?(什么是edm邮件,EDM邮件主题范例)</a> </li><li> <a class="text_overflow" href="/qtweb/news23/394873.html">TIC上的区块链技术饕餮UCloud引领区块链安全应用落地</a> </li><li> <a class="text_overflow" href="/qtweb/news40/148990.html">微信怎么禁止添加好友</a> </li><li> <a class="text_overflow" href="/qtweb/news38/252538.html">大白话聊聊微服务——人人都能看懂的演进过程</a> </li><li> <a class="text_overflow" href="/qtweb/news47/375347.html">html5中如何绘制运动轨迹</a> </li><li> <a class="text_overflow" href="/qtweb/news14/23064.html">美国服务器不稳定是怎么回事</a> </li><li> <a class="text_overflow" href="/qtweb/news28/388778.html">Python程序:连接数字并计算n+nn+nnn</a> </li><li> <a class="text_overflow" href="/qtweb/news43/460293.html">服务器集群新增服务器的方法和注意事项</a> </li><li> <a class="text_overflow" href="/qtweb/news28/466278.html">访问Linux无权限访问:拒之门外(linux无权限)</a> </li><li> <a class="text_overflow" href="/qtweb/news17/477017.html">使用VPS开启共享IP加速流量,提升挂机宝效率!(vps开共享ip挂机宝)</a> </li> </ul> </div> <div class="bkright tag"> <p><a href="https://www.cdcxhl.com/hangye/" target="_blank">同城分类信息</a></p> <ul> <li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/bolixiufu/" target="_blank">汽车玻璃修复</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/bpfhw/" target="_blank">边坡防护网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/gaokongche/" target="_blank">高空作业车租赁</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/sljbgc/" target="_blank">三轮搅拌车</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/menchuang/" target="_blank">门窗定制</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/hangkongxiang/" target="_blank">航空箱</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/zhanting/" target="_blank">展览展示</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/fwqtg/" target="_blank">服务器托管</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/shipaifang/" target="_blank">石牌坊</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/zdfhw/" target="_blank">主动防护网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/baiwuyu/" target="_blank">白乌鱼</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/gangting/" target="_blank">岗亭</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/zkj/" target="_blank">公路钻孔机</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/fengyangtai/" target="_blank">封阳台</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/rxfhw/" target="_blank">柔性防护网</a> </li><li class="col-lg-6 col-md-6 col-sm-6 col-xs-6"> <a href="https://www.cdcxhl.com/hangye/iso/" target="_blank">iso认证</a> </li> </ul> </div> </div> </div> <div class="carousel-inner linkbg" style="background: #fff"> <div class="container"> <a href="https://www.cdxwcx.com/tuiguang/zhenghe.html" target="_blank">整合营销</a>    <a href="https://www.cdcxhl.com/idc/gysx.html" target="_blank">贵阳托管服务器</a>    <a href="http://www.cdjzmc.cn/" target="_blank">四川门窗</a>    <a href="http://www.cdkjz.cn/fangan/education/" target="_blank">教育培训网站建设方案</a>    <a href="https://www.cdcxhl.com/app.html" target="_blank">成都app软件开发公司</a>    <a href="http://www.cdxwcx.cn/tuoguan/guanghua.html" target="_blank">光华服务器托管</a>    <a href="http://www.cdxwcx.cn/tuoguan/yidong.html" target="_blank">移动机房服务器托管</a>    <a href="http://www.cxjianzhan.com/seo/" target="_blank">seo关键词优化</a>    <a href="http://m.xwcx.net/" target="_blank">H5网站制作</a>    <a href="https://www.cdxwcx.com/city/chongqing/" target="_blank">重庆网站建设网络公司</a>    <a href="https://www.cdcxhl.com/wangzhandingzhi.html" target="_blank">成都企业网站定制</a>    <a href="https://www.cdxwcx.com/city/chongzhou/" target="_blank">崇州做网站</a>    <a href="https://www.cdxwcx.com/jifang/xibuxinxi.html" target="_blank">西部信息机房</a>    <a href="http://www.wjwzjz.com/" target="_blank">温江做网站公司</a>    <a href="http://www.zhbanjia.com/" target="_blank">子晨包装</a>    <a href="http://www.xhgfhy.com/ " target="_blank">犀浦防护栏定制</a>    <a href="http://www.ledaz.cn/" target="_blank">成都小谭网创广告</a>    <a href="http://www.nzanhua.com/" target="_blank">四川雕琢时光</a>    <a href="https://www.cdcxhl.com/qiye.html" target="_blank">成都企业网站建设</a>    <a href="http://chengdu.kswjz.com/weixin/" target="_blank">微信营销</a>     </div> </div> <footer> <div class="carousel-inner footjz"> <div class="container"> <i class="icon iconfont zbw"></i> 高品质定制 <i class="icon iconfont"></i> 跨终端自动兼容 <i class="icon iconfont"></i> 节约开发成本 <i class="icon iconfont"></i> 开发周期短 <i class="icon iconfont"></i> 一体化服务 <button type="button" class="btn btn-default btn-lg" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 立即开始2800定制网站建设</button> <button type="button" class="btn btn-default btn-xs" onClick="window.location.href='tencent://message/?uin=631063699&Site=&Menu=yes'"> 2800定制网站建设</button> </div> </div> <div class="carousel-inner bqsy"> <div class="container"> <div class="lxfs"> <h4 class="yutelnone">028-86922220 13518219792</h4> <h4 class="yutelblock"><a href="tel:02886922220">028-86922220</a> <a href="tel:13518219792">13518219792</a></h4> <a class="btn btn-default" href="tencent://message/?uin=532337155&Site=&Menu=yes" role="button">网站建设<span>QQ</span>:532337155</a> <a class="btn btn-default" href="tencent://message/?uin=631063699&Site=&Menu=yes" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=532337155&version=1&src_type=web&web_src=oicqzone.com" role="button">网站制作<span>QQ</span>:532337155</a> <a class="btn btn1 btn-default" href="mqqwpa://im/chat?chat_type=wpa&uin=631063699&version=1&src_type=web&web_src=oicqzone.com" role="button">营销推广<span>QQ</span>:631063699</a> <a class="btn btn-default nonea" href="tencent://message/?uin=1683211881&Site=&Menu=yes" role="button">售后QQ:1683211881</a> <div class="dz">创新互联建站专注: <a href="https://www.cdcxhl.com/" target="_blank">网站设计</a> <a href="https://www.cdcxhl.com/" target="_blank">网站制作</a> <a href="https://www.cdcxhl.com/" target="_blank">网站建设</a> <address>地址:成都太升南路288号锦天国际A幢10楼</address> </div> </div> <div class="bzdh dz"><img src="https://www.cdcxhl.com/imges/bottom_logo.png" alt="创新互联"> <p><a href="https://www.cdcxhl.com/menu.html" target="_blank">成都创新互联科技有限公司</a><br> Tel:400-028-6601(7x24h)</p></div> </div> </div> </footer> </body> </html> <script> $.getJSON ("../../qtwebpic.txt", function (data) { var jsonContent = { "featured":data } var random = jsonContent.featured[Math.floor(Math.random() * jsonContent.featured.length)]; $(".adpic .adimg").attr("href",random.link) $(".adpic img").attr("src",random.pic); }) </script>