java中 以blob存储的图片如何以二进制流在jsp页面显示,而且是批量显示图片,求代码

java中 以blob存储的图片如何以二进制流在jsp页面显示,而且是批量显示图片,求代码,第1张

// 后台代码

list存储每张的fileid

针对每个file写输出流,写在单独的method中

// jsp侧

<c:foreach val="file" items="list">

<img src="getimageactionfileid" + "${filefileid}" />

</c:foreach>

这里,我只想总结一下我一下午研究文件上传,上传功能的思考。也许花费了很多时间,但还是觉得比较值的。

以前一直听说过“项目使用的所有应该保存在服务器上,”一直看过这样的代码:Java后端由各种流组成的处理或着文件的方法。当时其实都是朦胧的,似懂非懂的样子。现在或许是有那么的一点理解了:当项目或者具体说页面中存在大量的时,页面的加载可能会很慢,这时,可能就需要使用一个独立的服务器来专门的读取这些了, 所以才有了服务器的说法。(或许是这样)。

上传功能的具体实现(当然文件也一样):

总的来说是这样的, 我们在页面上通过按钮获取到某张后,会显示在页面上(如果你需要的话),显示的可以是本身,或者是的名字。然后通过ajax,把传到了Java后台,(以什么格式我还不清楚),根据我这一下午的实践,MultipartFile ,这个类可以完全接收到前台传过来的数据。,这里也许有人会问, 传到后台干嘛呢。假设你的前端调用的不是你本项目的Java后台代码,而是另外一个接口Api项目的话, 那么,其实,这个APi项目就可以当作一个服务器了。额,这里仅仅是临时保存了而已,就页面而言,如果是表单,你还需要提交表单。那么表单提交时,你还会保存吗?应该是存在服务器上的地址吧。

MultipartFile 通过 MultipartFile transferTo( new File()), 仅需要这步骤,就可以把存到服务器所在的电脑的任意一个盘或者路径里面。 其实这个很简单,难是难在 文件的创建。(坑了我很久),

new File("d:/test1/test2/test3/demopng"), 类似要创建这样的 File文件时, 你要先判断demopng 的父级路径是否存在,如果不存在则要先创建。否则你也许会报一个错误,“javaioFileNotFoundException 拒绝访问”

也许废话说了很多,下面直接上示例代码, 本实例代码亲测有效可用。本实例 前端采用layui + 后端 springMVC+MultipartFile

页面jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<!DOCTYPE html>

<html>

<head>

<title>文件上传demo</title>

<%@include file="/comm/mytagsjsp" %>

</head>

<body>

<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">

<legend>常规使用:普通

我这个是使用的echarts的饼图,如果需要使用到其他的图形,可以在echarts的官网上面去找找,上面各种的图都有例子

option = {

title : {

//图中2的位置

text: '某站点用户访问来源',

subtext: '纯属虚构',

x:'center'

},

tooltip : {

trigger: 'item',

formatter: "{a} <br/>{b} : {c} ({d}%)"

},

legend: {

orient: 'vertical',

left: 'left',

data: ['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']//图中1的位置

},

series : [   //图中3的位置

{

name: '访问来源',

type: 'pie',

radius : '55%',

center: ['50%', '60%'],

data:[

//这下面就是你从数据库中查询的结果

{value:335, name:'直接访问'},

{value:310, name:'邮件营销'},

{value:234, name:'联盟广告'},

{value:135, name:'视频广告'},

{value:1548, name:'搜索引擎'}

],

itemStyle: {

emphasis: {

shadowBlur: 10,

shadowOffsetX: 0,

shadowColor: 'rgba(0, 0, 0, 05)'

}

} }]};

数据具体怎么从后台传送到前台来,楼主应该知道的吧,我这儿就不说了,望采纳!

我把你的代码稍微改造了下,我这边是可以显示的。代码如下:

数据库 *** 作部分:

package comdatabase;

import javaioInputStream;

import javasql;

/

  @作者 王建明

  @创建日期 13-10-7

  @创建时间 下午12:32

  @版本号 V 10

 /

public class DataBaseUtil {

public static InputStream getImageStreamFromDataBase() {

Connection conn = null;

try {

ClassforName("commysqljdbcDriver");

conn =

DriverManagergetConnection("jdbc:mysql://localhost/quickstart", "root", "123456");

Statement stmt = conncreateStatement();

String sql = "select book_image from tbl_book where id=1 ";

ResultSet rs = stmtexecuteQuery(sql);

if (rsnext()) {

return rsgetBinaryStream("book_image");

}

} catch (Exception e) {

Systemoutprintln("出现异常: " + egetMessage());

} finally {

try {

if (conn != null)

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

return null;

}

}

servlet部分:

package comservlet;

import comdatabaseDataBaseUtil;

import javaxservletServletException;

import javaxservlet>}

webxml中的servlet配置:

    <servlet>

        <servlet-name>ShowImage</servlet-name>

        <servlet-class>comservletShowImage</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>ShowImage</servlet-name>

        <url-pattern>/showImage</url-pattern>

    </servlet-mapping>

页面中加载方式:

<img src="showImage" />

希望对你有帮助O(∩_∩)O~

在数据库提取部分数据,在JSP上显示的做法如下:

思路:1、创建db连接 2、创建statement 3、执行查询 4、遍历结果并展示

完整代码如下:

<span style="font-size:12px;"><span style="font-size:14px;"><%@ page language="java" import="javasql,javaio,javautil"%>

<%@ page contentType="text/html;charset=utf-8"%>

<html>

<head>

<style type="text/css">

table {

border: 2px #CCCCCC solid;

width: 360px;

}

td,th {

height: 30px;

border: #CCCCCC 1px solid;

}

</style>

</head>

<body>

<%

//驱动程序名

String driverName = "commysqljdbcDriver";

//数据库用户名

String userName = "root";

//密码

String userPasswd = "szy";

//数据库名

String dbName = "studentmanage";

//表名

String tableName = "student";

//联结字符串

String url = "jdbc:mysql://localhost:3306/" + dbName + "user="

+ userName + "&password=" + userPasswd;

ClassforName("commysqljdbcDriver")newInstance();

Connection connection = DriverManagergetConnection(url);

Statement statement = connectioncreateStatement();

String sql = "SELECT  FROM " + tableName;

ResultSet rs = statementexecuteQuery(sql);

%>

<br>

<br>

<table align="center">

<tr>

<th>

<%

outprint("学号");

%>

</th>

<th>

<%

outprint("姓名");

%>

</th>

<th>

<%

outprint("专业");

%>

</th>

<th>

<%

outprint("班级");

%>

</th>

</tr>

<%

while (rsnext()) {

%>

<tr>

<td>

<%

outprint(rsgetString(1));

%>

</td>

<td>

<%

outprint(rsgetString(2));

%>

</td>

<td>

<%

outprint(rsgetString(3));

%>

</td>

<td>

<%

outprint(rsgetString(4));

%>

</td>

</tr>

<%

}

%>

</table>

<div align="center">

<br> <br> <br>

<%

outprint("数据查询成功,恭喜你");

%>

</div>

<%

rsclose();

statementclose();

connectionclose();

%>

</body>

</html></span><span style="font-size:24px;color: rgb(255, 0, 0);">

</span></span>

展示结果:

以上就是关于java中 以blob存储的图片如何以二进制流在jsp页面显示,而且是批量显示图片,求代码全部的内容,包括:java中 以blob存储的图片如何以二进制流在jsp页面显示,而且是批量显示图片,求代码、MultipartFile上传文件数据库保存进了但是target里面没有图片、java怎么从数据库里获得动态数据生成统计图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10183074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存