JSP如何实现数据库中图片的存储与显示

本篇内容主要讲解“JSP如何实现数据库中图片的存储与显示”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JSP如何实现数据库中图片的存储与显示”吧!

创新互联客户idc服务中心,提供西信服务器托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。

1、引言

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

2、建立后台数据库

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

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

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

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

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

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

<%@ page contentType="text/html;charset=gb2312"%>     存储图片TITLE> HEAD> <body>  <FORM METHOD=POST ACTION="testimage.jsp"> 新 闻 标 题:<INPUT TYPE="text" NAME="content"><BR> 新 闻 图 片:<INPUT TYPE="file" NAME="image"><BR> 新闻内容:  <TEXTAREA name="txtmail" rows="15" cols="90"   style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid;   BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;   HEIGHT: 200px; WIDTH: 100%" wrap="physical" >TEXTAREA><br> <INPUT TYPE="submit">form> body> HTML></pre><p>将此文件保存为InputImage.jsp文件,其中testimage.jsp文件是用来将图片数据存入数据库的,具体代码如下所示:</p><pre><%@ page contentType="text/html;charset=gb2312"%>   <%@ page import="java.sql.*" %></pre><ul><li><p><strong><</strong>%@ page import="java.util.*"%<strong>></strong> </p></li><li><p><strong><</strong>%@ page import="java.text.*"%<strong>></strong> </p></li><li><p><strong><</strong>%@ page import="java.io.*"%<strong>></strong> </p></li><li><p><strong><html></strong>   </p></li><li><p><strong><body></strong>   </p></li><li><p><strong><</strong>%  </p></li><li><p>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  </p></li><li><p>//加载驱动程序类  </p></li><li><p>Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  </p></li><li><p>//建立数据库联机,其中denglu为数据库名,sa为连接数据库的帐号及密码。  </p></li><li><p>Statement stmt=con.createStatement();   </p></li><li><p>//建立Statement对象  </p></li><li><p>String content=request.getParameter("content");  </p></li><li><p>content=new String(content.getBytes("8859_1"),"gb2312");  </p></li><li><p>String filename=request.getParameter("image");  </p></li><li><p>filename=new String(filename.getBytes("8859_1"),"gb2312");  </p></li><li><p>String detail=request.getParameter("txtmail");  </p></li><li><p>detail=new String(detail.getBytes("8859_1"),"gb2312");  </p></li><li><p>//获得所要显示图片的标题、存储路径、内容,并进行中文编码  </p></li><li><p>FileInputStream str=new FileInputStream(filename);  </p></li><li><p>String sql="insert into picturenews(content,image,detail) values(?,?,?)";  </p></li><li><p>PreparedStatement pstmt=con.prepareStatement(sql);  </p></li><li><p>pstmt.setString(1,content);  </p></li><li><p>pstmt.setBinaryStream(2,str,str.available());  </p></li><li><p>pstmt.setString(3,detail);  </p></li><li><p>pstmt.execute();  </p></li><li><p>//将数据存入数据库  </p></li><li><p>out.println("Success,You Have Insert an Image Successfully");  </p></li><li><p>%<strong>></strong> </p></li><p><strong>4、网页中动态显示图片</strong></p><p>接下来我们要编程从数据库中取出图片,其代码如下所示。</p><pre><%@ page contentType="text/html;charset=gb2312"%>   <%@ page import="java.sql.*" %> <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <%@ page import="java.io.*"%>   <html> <body> <%  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   //加载驱动程序类  Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  Statement stmt=con.createStatement();  ResultSet rs=null;   //建立ResultSet(结果集)对象  int id= Integer.parseInt(request.getParameter("id"));  //获得所要显示图片的编号id,并转换为整型  String sql = "select image from picturenews WHERE id="+id+"";   //要执行查询的SQL语句  rs=stmt.executeQuery(sql);  while(rs.next()) {  ServletOutputStream sout = response.getOutputStream();  //图片输出的输出流  InputStream in = rs.getBinaryStream(1);  byte b[] = new byte[0x7a120];  for(int i = in.read(b); i != -1;)  {  sout.write(b);   //将缓冲区的输入输出到页面  in.read(b);  }  sout.flush();  //输入完毕,清除缓冲  sout.close();  }  %> body> html></pre><p>将此文件保存为testimageout.jsp文件。下一步要做的工作就是使用HTML标记:</p><pre><IMG src="testimageout.jsp?id=<%=rs.getInt("id")%>" width=100 height=100></pre><p>取出所要显示的图片,其中id是所要取出图片的编号。本例中我们输出了***个和***一个图片信息,详细的程序代码如下所示。</p><pre><%@ page contentType="text/html;charset=gb2312"%>   <%@ page import="java.sql.*" %> <html> <head> <title>动态显示数据库图片title> head> <body> <%   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  Statement stmt=con.createStatement();  String sql=new String();  sql= "select * from picturenews";  ResultSet rs=stmt.executeQuery(sql);  rs.last();  //将指针移至***一条记录  %>   <table> <tr><td><IMG height=99 src="testimageout.jsp?id=1" width=136>td> //取出***个图片  <td><IMG height=99 src="testimageout.jsp?id=<%=rs.getInt("id")%>" width=136>td> //取出***一个图片  tr>table> body> html></pre></ul><p>到此,相信大家对“JSP如何实现数据库中图片的存储与显示”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!</p>            
            
                            <br>
                当前标题:JSP如何实现数据库中图片的存储与显示                <br>
                标题链接:<a href="http://myzitong.com/article/ipojjo.html">http://myzitong.com/article/ipojjo.html</a>
            </div>
        </div>
        <div class="contentr fr">
            <h3>其他资讯</h3>
            <ul>
                <li>
                        <a href="/article/ejggpi.html">做一个基础的企业网站多少钱,做个基本的企业网站要多少钱</a>
                    </li><li>
                        <a href="/article/ejggsc.html">免费的https证书申请能用吗?ssl证书的作用是什么</a>
                    </li><li>
                        <a href="/article/ejggpp.html">桌面背景怎么设置,电脑桌面背景怎么设置我是新手说具体点</a>
                    </li><li>
                        <a href="/article/ejgipo.html">重定向跳转是什么意思,该地址含有过多的重定向是什么意思</a>
                    </li><li>
                        <a href="/article/ejggee.html">公司域名过户个人,个人域名过户给企业麻烦吗</a>
                    </li>            </ul>
        </div>
    </div>
</div>
<!--底部-->
<footer>
    <div class="foot">
        <div class="container">
            <h1>梓潼大橙子建站您身边的网站制作服务商</h1>
            <div class="foot1">
                <ul>
                    <li>
                        <dl><i class="iconfont"></i><b>地址ADDRESS</b></dl>
                        <p>四川-成都青羊区太升南路288号<br>
                            锦天国际A座10楼
                        </p>
                    </li>
                    <li>
                        <dl><i class="iconfont"></i><b>电话/TEL</b></dl>
                        <p><a href="tel:02886922220" target="_blank">028 86922220</a> (工作日)<br>
                            <a href="tel:18980820575" target="_blank">1898082 0575</a> ( 7x24 )
                        </p>
                    </li>
                    <li>
                        <dl><i class="iconfont"></i><b>QQ咨询</b></dl>
                        <p> 244261566 (售前)<br>
                            631063699 (售后)
                        </p>
                    </li>
                    <li>
                        <dl><i class="iconfont"></i><b>邮箱/E: mail</b></dl>
                        <p> service@cdcxhl.com (业务)<br>
                            hr@cdcxhl.com (求职)
                        </p>
                    </li>
                </ul>
            </div>
            <div class="link">
                友情链接:
                <a href="http://www.scyucang.cn/" title="圣与卓设计" target="_blank">圣与卓设计</a>   <a href="http://www.xhgfhy.com/
" title="犀浦封阳台" target="_blank">犀浦封阳台</a>   <a href="http://www.scjieda.cn/" title="小谭建站工作室" target="_blank">小谭建站工作室</a>   <a href="https://www.cdcxhl.cn/
" title="网站空间" target="_blank">网站空间</a>   <a href="http://www.zaowang.cn/" title="恒翔机电" target="_blank">恒翔机电</a>   <a href="http://www.cdlinhua.com/" title="成都商务茶叶销售" target="_blank">成都商务茶叶销售</a>   <a href="http://m.cdcxhl.cn/shop/
" title="成都商城网站建设" target="_blank">成都商城网站建设</a>   <a href="http://www.dywzjz.com/" title="大英泰恒网站" target="_blank">大英泰恒网站</a>   <a href="http://www.cdhuace.com/" title="成都广告公司" target="_blank">成都广告公司</a>   <a href="http://seo.cdkjz.cn/seo/" title="成都SEO优化公司" target="_blank">成都SEO优化公司</a>               </div>
        </div>
    </div>
    <div class="copy container">
        Copyright