美图齐众专注资阳网站设计 资阳网站制作 资阳网站建设
资阳网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

基于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://zsjierui.cn/article/coecchh.html">http://zsjierui.cn/article/coecchh.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/djdohei.html">为什么下划线显示空白</a> </li><li> <a href="/article/djdohig.html">全面比较编程语言Julia和Python,让您更容易做出抉择!</a> </li><li> <a href="/article/djdopie.html">ICP备案中心是什么,什么是ICP备案中心</a> </li><li> <a href="/article/djdohoi.html">比较Riak与Redis面对NoSQL使用场景及性能(riak和redis)</a> </li><li> <a href="/article/djdohic.html">使用JavaScriptobjectURLs,可以处理图像、音频和视频</a> </li> </ul> </div> </div> <footer> <div class="message"> <div class="mess container"> <p>免费获取网站建设与品牌策划方案报价</p> <span>*主要业务范围包括:高端网站建设, 集团网站建设(网站建设网站制作)找网站建设公司就上美图齐众。</span> <form action=""> <input type="text" class="ipt1" placeholder="联系人"> <input type="text" class="ipt2" placeholder="联系电话"> <textarea name="" id="" placeholder="内容描述:描述您的需求,如网站、微信、电商、APP等。"></textarea> <a href="">提交需求</a> </form> </div> </div> <div class="footA"> <div class="footAs container"> <ul> <h3>联系我们</h3> <b>028-86922220</b> <li>手机:13518219792</li> <li>地址:成都市太升南路288号锦天国际A幢1002号</li> <li class="hr1"></li> <li>24小时服务热线:028-86922220</li> </ul> <ul> <h3>网站建设服务</h3> <li>网页设计</li> <li>网站制作</li> <li>网站开发</li> </ul> <ul> <h3>网站推广服务</h3> <li>营销网站建设</li> <li>百度快速排名</li> <li>整站网站推广</li> </ul> <ul> <h3>网站运维服务</h3> <li>基础维护</li> <li>网站改版</li> <li>网站维护</li> </ul> <ul> <h3>FOLLOW US</h3> <li class="hr2"></li> <li> <dd class="fl"><img src="/Public/Home/img/ewm.png" alt=""><p>微信二维码</p></dd> <dd class="fr"><img src="/Public/Home/img/ewm.png" alt=""><p>微信二维码</p></dd> </li> </ul> </div> <div class="link container"> 友情链接: <a href="http://www.lzhejiang.com/" title="合江网站制作公司" target="_blank">合江网站制作公司</a>   <a href="http://www.zjjiebao.cn/" title="四川人造草坪" target="_blank">四川人造草坪</a>   <a href="http://www.wxkmsfdj.com/" title="康明斯发电机维修" target="_blank">康明斯发电机维修</a>   <a href="http://www.scpingwu.com/" title="四川平武网站建设" target="_blank">四川平武网站建设</a>   <a href="http://www.cdmstgs.com/" title="成都商业雕塑定制" target="_blank">成都商业雕塑定制</a>   <a href="http://m.xwcx.net/phone/" title="手机网站版本" target="_blank">手机网站版本</a>   <a href="http://www.xhgfhy.com/ " title="成都雨棚定制" target="_blank">成都雨棚定制</a>   <a href="http://www.dianlipushe.com/" title="成都发电机组销售" target="_blank">成都发电机组销售</a>   <a href="http://www.dwxyfdj.com/" title="德阳维修发电机" target="_blank">德阳维修发电机</a>   <a href="http://chengdu.cdcxhl.cn/H5/" title="成都响应式网站建设公司" target="_blank">成都响应式网站建设公司</a>    </div> </div> <div class="footB"> <div class="container"> <div class="fl"> Copyright © 2025 资阳站青羊区美图齐众设计工作室(个体工商户) 资阳网站建设公司-选网站建设公司美图齐众!专业的网站制作公司! </div> <div class="fr"> All Rights Reserved 版权所有 <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">蜀ICP备2025119604号-1</a> </div> </div> </div> </footer> </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>