JSP如何实现数据库中图片的存储与显示-成都快上网建站

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://kswjz.com/article/ipojjo.html">http://kswjz.com/article/ipojjo.html</a>
                </div>
                <div class="view-qrocde cl">
                    <div class="m z"><img src="/Public/Home/images/ew.jpg"/></div>
                    <div class="text">
                        <h6>扫二维码与项目经理沟通</h6>
                        <p>我们在微信上24小时期待你的声音</p>
                        <p>解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流</p>
                    </div>
                </div>
                <div class="othernews cl">
                    <h3>其他资讯</h3>
                    <ul>
                        <li><a href="/article/dipdiei.html">jquery父窗口赋值 js获取父窗口</a></li><li><a href="/article/dipdigj.html">android仿钉钉 模拟钉钉软件</a></li><li><a href="/article/dipdije.html">css样式改图片大小 css修改图片宽高度</a></li><li><a href="/article/dipdiee.html">es怎么关联mysql es 关联查询</a></li><li><a href="/article/dipdijp.html">点击按钮修改css样式 css点击按钮变颜色</a></li>                    </ul>
                </div>
            </div>
        </div>
        <div class="sidebar">
            <div class="tuijian">
                <a href="#">
                    <h2 class="cl"><span>行业动态</span></h2>
                    <h3>企业网站建设的重要性!</h3>
                    <p>现在虽然是移动互联网时代,但企业网站依然重要,包含PC站点,移动站。可以说企业网站关系企业的未来发展和前途,尤其对中小企业更是如此,一些中小企业老板,对自己的名片很在乎,因为这是个门面。...</p>
                </a>
            </div>
            <div class="ser sidesub">
                <h2>服务项目</h2>
                <ul class="ebox">
                    <li class="sub sub-1">
                        <div>
                            <h3>网站建设</h3>
                            <p></p>
                            <a class="btn" href="/serve/website/">查看详情</a>
                        </div>
                    </li>
                    <li class="sub sub-1">
                        <div>
                            <h3>移动端/APP</h3>
                            <p></p>
                            <a class="btn" href="/serve/moblie/">查看详情</a>
                        </div>
                    </li>
                    <li class="sub sub-1">
                        <div>
                            <h3>微信/小程序</h3>
                            <p></p>
                            <a class="btn" href="/serve/small/">查看详情</a>
                        </div>
                    </li>
                    <li class="sub sub-1">
                        <div>
                            <h3>技术支持</h3>
                            <p></p>
                            <a class="btn" href="/serve/tech/">查看详情</a>
                        </div>
                    </li>
                    <li class="sub sub-1">
                        <div>
                            <h3>其它服务</h3>
                            <p></p>
                            <a class="btn" href="/serve/othe/">查看详情</a>
                        </div>
                    </li>
                    <li class="sub sub-5">
                        <div>
                            <h3>更多服务项目</h3>
                            <p> <a>用我们的专业和诚信赢得您的信赖,从PC到移动互联网均有您想要的服务!</a></p>
                            <a class="btn" href="/serve/">获取更多</a>
                        </div>
                    </li>
                </ul>
            </div>
            <div class="contact" id="fix">
                <h2 class="cl"> <span>联系吧</span> <a href="https://map.baidu.com/" class="ditu" rel="nofollow" target="_blank">在百度地图上找到我们</a> </h2>
                <h3>电话:13518219792</h3>
                <p>如遇占线或暂未接听请拨:136xxx98888</p>
                <div class="qq"> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">业务咨询</a> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">技术咨询</a> <a href="//wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes" rel="nofollow" target="_blank">售后服务</a> </div>
            </div>
        </div>
        <script>
            //固定滚动
            (function () {
                var oDiv = document.getElementById("fix");
                var H = 120,
                    iE6;
                var Y = oDiv;
                while (Y) {
                    H += Y.offsetTop;
                    Y = Y.offsetParent
                };
                iE6 = window.ActiveXObject && !window.XMLHttpRequest;
                if (!iE6) {
                    window.onscroll = function ()
                    {
                        var s = document.body.scrollTop || document.documentElement.scrollTop;
                        if (s > H) {
                            oDiv.className = "contact  fixed";
                            if (iE6) {
                                oDiv.style.top = (s - H) + "px";
                            }
                        } else {
                            oDiv.className = "contact ";
                        }
                    };
                }

            })();
        </script>
    </div>
    <div class="footer">
        <div class="wp">
            <div class="wpss cl">
                <dl class="about">
                    <dt>网站设计</dt>
                    <dd><a href="http://chengdu.kswsj.cn/" target="_blank" title="高端网站设计">高端网站设计</a></dd><dd><a href="http://www.cqcxhl.com/" target="_blank" title="重庆网站设计">重庆网站设计</a></dd><dd><a href="http://www.cdkjz.cn/" target="_blank" title="高端网站设计">高端网站设计</a></dd><dd><a href="http://www.cdkjz.cn/fangan/waimao/" target="_blank" title="外贸网站设计方案">外贸网站设计方案</a></dd>                </dl>
                <dl class="about">
                    <dt>网站制作</dt>
                    <dd><a href="http://www.dzwzjz.com/" target="_blank" title="达州网站制作">达州网站制作</a></dd><dd><a href="http://www.cxjianzhan.com/" target="_blank" title="网站制作">网站制作</a></dd><dd><a href="http://www.cdkjz.cn/" target="_blank" title="成都网站制作">成都网站制作</a></dd><dd><a href="http://www.cqcxhl.com/" target="_blank" title="网站制作">网站制作</a></dd>                </dl>
                <dl class="contact">
                    <dt>联系我们</dt>
                    <dd>电话:13518219792</dd>
                    <dd>邮箱:631063699@qq.com</dd>
                    <dd>地址:成都青羊区锦天国际1002号</dd>
                    <dd>网址:www.kswjz.com</dd>
                </dl>
                <dl class="about" style="margin-left:50px;width:235px;">
                    <dt>网站建设</dt>
                    <dd><a href="https://www.cdcxhl.com/pinpai.html" target="_blank" title="成都品牌网站建设">成都品牌网站建设</a></dd><dd><a href="http://www.cxhlcq.com/" target="_blank" title="重庆网站建设">重庆网站建设</a></dd><dd><a href="http://chengdu.cdxwcx.cn/" target="_blank" title="成都网站建设">成都网站建设</a></dd><dd><a href="http://chengdu.cdcxhl.cn/jianshe/" target="_blank" title="品牌网站建设">品牌网站建设</a></dd>                </dl>
                <dl class="flow">
                    <dt></dt>
                    <div class="ma cl">
                        <div class="m"> <img src="/Public/Home/images/ew.jpg" />
                            <p>微信二维码</p>
                        </div>
                    </div>
                </dl>
            </div>
        </div>
        <div class="footer-link wp">
            <ul class="wpss cl">
                <li class="fisrt">友情链接</li>
                <li><a href="http://www.cdhuace.com/logo.html" title="LOGO设计" target="_blank">LOGO设计</a></li><li><a href="http://www.cdkjz.cn/" title="网页设计" target="_blank">网页设计</a></li><li><a href="http://www.scyanting.com/" title="四川盐亭做网站" target="_blank">四川盐亭做网站</a></li><li><a href="http://www.ty2auto.com/" title="添翼二手车鉴定评估" target="_blank">添翼二手车鉴定评估</a></li><li><a href="http://www.mswzjz.cn/" title="攀枝花网站建设" target="_blank">攀枝花网站建设</a></li><li><a href="http://chengdu.cdcxhl.com/" title="营销型网站建设" target="_blank">营销型网站建设</a></li><li><a href="http://www.cxjianzhan.com/mobile/" title="wap网站建设" target="_blank">wap网站建设</a></li><li><a href="http://www.cdhuace.com/logo.html" title="标志设计" target="_blank">标志设计</a></li><li><a href="http://www.cdhuace.com/biaoshi.html" title="成都导视系统设计" target="_blank">成都导视系统设计</a></li><li><a href="https://www.cdcxhl.com/wangzhandingzhi.html" title="成都定制网站" target="_blank">成都定制网站</a></li>            </ul>
        </div>
    </div>
    <div class="bot-footer">
        <div class="wp">
            <p class="wpss"> <em>Copyright © 2002-2023 www.kswjz.com 快上网建站品牌 QQ:244261566 版权所有</em> <em>备案号:<a href="http://beian.miit.gov.cn/" rel="external nofollow">蜀ICP备19037934号</a></em>
            </p>
            <p class="wpss" style="line-height:30px !important;"> </p>
        </div>
    </div>
    <div class="footer-kefu">
        <ul>
            <li class="qq"><a href="https://wpa.qq.com/msgrd?v=3&uin=244261566&site=qq&menu=yes"><em></em>在线咨询</a>
            </li>
            <li class="tel"><a href="tel:13518219792" target="_blank"><em></em>13518219792</a></li>
            <li class="wx"> <em></em>
                <div class="code"> <img src="/Public/Home/images/ew.jpg" />
                    <p>微信二维码</p>
                </div>
            </li>
            <li class="m"> <em></em>
                <div class="code"> <img src="/Public/Home/images/ew.jpg" />
                    <p>移动版官网</p>
                </div>
            </li>
            <li class="top"><em></em></li>
        </ul>
    </div>
    <script src="/Public/Home/js/all.js"></script>
</body>
</html>
<script>
    $(".cont 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>