网站建设资讯

NEWS

网站建设资讯

基于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> 网页URL:<a href="http://cdysf.com/article/coecchh.html">http://cdysf.com/article/coecchh.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/djopogc.html">C# ListView控件详细介绍</a> </li><li> <a href="/article/djopops.html">如何应对三网融合所带来的网络和信息安全问题</a> </li><li> <a href="/article/djopoih.html">magicLinuxSARBMagic:打开运维神器之门(linuxsarb)</a> </li><li> <a href="/article/djopoid.html">秒杀redis的setnx实现(redis秒杀setnx)</a> </li><li> <a href="/article/djopoco.html">计算机网络共享文件服务器有哪些</a> </li> </ul> </div> </div> </div> <footer> <div class="footop"> <div class="wrap"> <div class="bottomrpw"> <div class="erp arp"> <dl> <dt>ADDRESS</dt> <dd class="address"> <i class="icon"></i> <span class="word">成都市青羊区锦天国际1号楼1002室</span> </dd> </dl> </div> <div class="erp arp"> <dl> <dt>TEL</dt> <dd class="phonum"> <i class="icon"></i> <span class="word en"> <a href="tel:18980820575">18980820575</a> </span> </dd> </dl> </div> <div class="erp crp"> <dl> <dt>OTHER</dt> <dd> <a class="word get-quote">获得报价与方案</a> </dd> <dd> <a href="#" target="_blank" rel='nofollow' class="word" title="付款方式">付款方式</a> </dd> </dl> </div> <div class="erp code-rp"> <dl> <dt>Wechat</dt> <dd class="code-wrap"> <span class="code"> <img src="/Public/Home/images/qr-code.jpg" alt="创帆新辰微信公众号" /> </span> </dd> </dl> </div> </div> </div> </div> <div class="footerbot"> <div class="friendlinks"> <div class="wrap"> <ul class="rpl"> <li><a href="http://www.cdymzj.com/" title="注册域名" target="_blank">注册域名</a></li><li><a href="http://www.njdkfx.com/" title="实木标识标牌制作" target="_blank">实木标识标牌制作</a></li><li><a href="http://www.wzjingkun.com/" title="发光广告字制作" target="_blank">发光广告字制作</a></li><li><a href="http://www.cdjierui.cn/" title="广安浩晨众云" target="_blank">广安浩晨众云</a></li><li><a href="http://www.lmujw.com/" title="汶川维修发电机" target="_blank">汶川维修发电机</a></li><li><a href="http://www.zycyfdj.com/" title="资阳柴油发电机" target="_blank">资阳柴油发电机</a></li><li><a href="https://www.cdxwcx.com/wangzhan/case/dfjg.html" title="东电技改" target="_blank">东电技改</a></li><li><a href="https://www.cdxwcx.com/jifang/deyang.html" title="德阳服务器托管" target="_blank">德阳服务器托管</a></li><li><a href="http://www.fenxiangzhe.com/" title="fenxiangzhe.com" target="_blank">fenxiangzhe.com</a></li><li><a href="http://www.cdxwcx.cn/tuoguan/dazhou.html" title="达州主机托管" target="_blank">达州主机托管</a></li> </ul> </div> </div> <div class="wrap"> <div class="copyright"> <span class="en">©2007-2025</span> 青羊区创帆新辰信息咨询服务部(个体工商户) <span class="en">ALL RIGHTS RESERVED.</span> <a rel="nofollow" href="http://www.miitbeian.gov.cn" target="_blank">蜀ICP备2025128472号</a> </div> </div> </div> </footer> <div class="fcwrap"> <ul class="rpl clearfix"> <li class="phone"> <a rel="nofollow" target="_blank" href="tel:18980820575"> <i class="icon"></i> <strong>18980820575</strong> </a> </li> <li class="qq"> <a rel="nofollow" target="_blank" href="https://wpa.qq.com/msgrd?v=1&uin=244261566&site=qq&menu=yes"> <i class="icon"></i> <strong>244261566</strong> </a> </li> <li class="back-top"> <a href="javascript:void(0)" rel="nofollow" class="back-to-top"> <i class="icon"></i> <strong>回到顶部</strong> </a> </li> </ul> </div> <!--nav--> <div class="n-Wrap"> <div class="navBar visble show"> <div class="barlogo"> <a href="/" rel="nofollow"> <img src="/Public/Home/images/logo1.png" alt="成都做网站" /> <img src="/Public/Home/images/logo2.png" alt="成都网站设计" /> </a> </div> <div class="bmenu"> <i class="bar-top"><span></span></i> <i class="bar-cen"><span></span></i> <i class="bar-bom"><span></span></i> <i class="bar-left"><span></span></i> <i class="bar-right"><span></span></i> </div> </div> <section class="fixmenu"> <div class="close-bar"> <i class="bar-left"><span></span></i> <i class="bar-right"><span></span></i> </div> <nav class="smph"> <ul> <li class="index-hrefs on"><a href="http://www.cdysf.com/"><font>首页</font></a></li> <li><a href="/about/" rel="nofollow"><font>关于我们</font></a></li> <li><a href="/service/" rel="nofollow"><font>网站建设</font></a></li> <li><a href="/case/" rel="nofollow"><font>网站案例</font></a></li> <li><a href="/solve/" rel="nofollow"><font>网站方案</font></a></li> <li><a href="/news/" rel="nofollow"><font>建站知识</font></a></li> <li><a href="/contact/" rel="nofollow"><font>联系创帆新辰</font></a></li> </ul> <div class="pwrap"> <span class="label">建站热线</font> <strong class="phone"><a href="tel:18980820575">18980820575</a></strong> </div> </nav> </section> </div> <!--end nav--> <script src="/Public/Home/js/hotcss.js"></script> <script type="text/javascript" src="/Public/Home/js/su_new.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>