求大神指点下思路,java后台实现对首页背景图片的更换

我用二进制流写了图片上传保存到数据库,首页如何接收传递过来的参数显示图片在jsp页面

15个回答

首先你这个思路就错误了,任何企业开发都不会把图片的二进制保存到数据库,图片太大,数据库会很快就满了,都是把图片保存到服务器的一个路径下,
例如tomcat的一个路径下面,然后把路径保存到数据库,这样去页面的时候就通过路径访问tomcat下面的图片就可以了。

查询数据库用
java类里面用new String(Content)
jsp页面用${Content}

gunxiong
蓝色海洋 查询数据库 typeHandler="com.ibatis.sqlmap.engine.type.BlobTypeHandlerCallback"
大约 2 年之前 回复

建议存图片路径
非要存二进制可以考虑,先在目录创建图片文件,给页面返回这个图片路径
写一个action 或servlet 调用方法查出图片数据,然后生成图片文件,返回路径
可以用aJax请求 或者 标签 标签

示例

请求另一个action , 并使用返回结果

 <s:action name="find_data" var="findData" namespace="/user"
            ignoreContextParams="true" executeResult="false" />
    <body background="${findData.imageSrc}" ></body>

find_data 为一个Action 或Servlet , findData 为 这个类实例的引用 imageSrc为这个类的一个成员属性要有get set
还有种方法 你喜欢你可以去试试
图片二进制上传与显示

/*

  • @(#) FileloadController.java 2016年12月22日 *
  • Copyright (c) 2015, XiaHeng NetWork. All Rights Reserved.
  • XiaHeng NetWork. CONFIDENTIAL */ package controller.admin;

import java.util.ArrayList;
import java.util.List;

import utils.interceptor.LoginAdminInterceptor;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.aop.Before;
import com.jfinal.upload.UploadFile;
import com.xiaheng.annotation.RouteViewPath;
import com.xiaheng.core.jfinal.CRUD;
import com.xiaheng.utils.CodeBean;
import com.xiaheng.utils.ProjectUtil;
import com.xiaheng.utils.UploadUtils;

/**

  • 附件上传
  • @Description
  • @author Chuck Don
  • @version 1.0
  • @since 2016年12月22日
    */
    @Before(LoginAdminInterceptor.class)
    @RouteViewPath("admin/")
    public class FileloadController extends CRUD {

    @Override
    public String route() {
    // TODO Auto-generated method stub
    return "/admin/file";
    }

    /**

    • @方法名:上传图片
    • @参数:
    • @输出:
    • @备注:
    • @作者: 徐磊
    • @时间: 2017年6月20 10:51:31
    • @修改: */ public void uploadImg() { List files = getFiles(); renderJSON(UploadUtils.uploadFile(files, ".jpg|.png|.jpeg", 1024 * 10)); }

    /**

    • @方法名:上传视频
    • @参数:
    • @输出:
    • @备注:
    • @作者: 徐磊
    • @时间: 2017年6月20 10:51:39
    • @修改: */ public void uploadVideo() { List files = getFiles(); renderJSON(UploadUtils.uploadFileSe(files, ".mp4", 1024 * 30)); }

    /**

    • @方法名:上传视频
    • @参数:
    • @输出:
    • @备注:
    • @作者: 徐磊
    • @时间: 2017年6月20 10:51:39
    • @修改: */ public void uploadVersion() { List files = getFiles(); renderJSON(UploadUtils.uploadFileSe(files, ".apk|.ipa", 1024 * 30)); }

    /**

    • @方法名:富文本编辑器上传图片
    • @参数:
    • @输出:
    • @备注:
    • @作者: 徐磊
    • @时间: 2017年6月16 4:51:07
    • @修改: */ public void uploadImgByEdit() { List files = getFiles(); CodeBean<?> bean = UploadUtils .uploadFile(files, ".jpg|.png", 1024 * 10); if (bean.isSuccess()) { JSONObject json = new JSONObject(); json.put("code", 0); json.put("msg", "上传成功"); JSONObject data = new JSONObject(); @SuppressWarnings("unchecked") ArrayList path = (ArrayList) bean.getData(); data.put("src", ProjectUtil.getLoaclURL(getRequest()) + path.get(0)); json.put("data", data); renderJson(json); } } }

不知道你解决了没有
前台代码:src中存放?前面放Servlet请求或者Action请求 ?后面放查询图片的参数(例如aaa=123,多个参数用& 连接例如src="testServlet?a=132&b=456")

<img src="testServlet?[XXXXX=?]" alt=""> 

//resp 是HttpServletResponse对象 blob(java.sql.Blob;)是从数据库中存放的blob数据查询出来的结果

//下面是主要的代码,不知道你在数据库中存储的是什么格式的数据
OutputStream os = resp.getOutputStream();
InputStream is = blob.getBinaryStream();
byte[] image == new byte[is.available()];
is.read(image);
os.write(image);
os.flush();

确实不能这样做,做动态刷新,就是一个js的事,动态发送获取图片的请求,而登陆界面用的图片数量有限,应保存在项目路径下,如果图片很多则建立图片管理服务器,其存取图片的方式也不是把图片流存入数据库的。

支持 rabbit 的说法,图片名称路径固定就好了,上传图片直接把原来的覆盖就OK了;
保险一点就先备份原来的,再覆盖。

把图片存放在数据库,
你们脑洞是得多大才能想到用这个方式,
先不说数据你要放在jsp页面上需要的是图片文件的物理路径,
不说数据库存储量是否足够你如此挥霍,
单是你每次都要把图片先读取出来先要处理才能使用想想就麻烦。
你何不数据库里存放图片路径,直接取路径然后传到页面上呢。

如果是在数据库读出来的,可以通过写一个方法,将图片写出。页面就用
如果是直接在数据库存的图片地址,从数据库读取到地址,页面就用
如果方法不会写,你告诉你用的是什么框架技术,我给你贴出来

qq_40898505
qq_40898505 springmvc hibernate+freemaker, 一个首页图片管理模块
大约 2 年之前 回复

给你范例;

 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/zPvcnAAAAAElFTkSuQmCC" />
共15条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问