我在数据库中存的图片类型是image ,在jsp中,提取显示的时候,怎样转换成string类型呀?
解决方案 »
- 怎么在Myeclipse中导入一个已有的Jsp项目啊?我import->Existing Projects into Workspace下面的finish是灰色
- 求助各路大虾 (特急!!)
- js id问题。。如果我要在同一个页面多次使用同一个JS我要怎么去实现
- foreach编译数据库
- [虚心请教:] tomcat下一个简单的jsp例子,errhandler抛出的异常在errorPage中如何捕捉??
- jsp问题。进来看看·急
- 关于Applet签名有效期
- 新手关于javascript的问题
- URL的参数传递问题
- 跪求大神帮忙看看!小弟感激不尽!
- java中HttpServlet中的response实时输出数据
- struts2.1与servlet冲突
一定要在数据库存放图片吗,能不能把它存放在服务器某个目录下,然后在数据库只存放图片路径就可以了呀!
除非有特殊需求,要不然一般都只存放路径。
技术拓展:只有在http协议传输的时候我们才会用到讲byte类型通过base64编码转换成string类型定义在xml文件中传输到远程再base64反解析成byte
<image src中传的必须是物理图片的绝对路径,才可以显示预览图片,我知道你想让你的byte图片直接在jsp中预览出来,代码示例如下:public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
String id = request.getParameter("imgId");
if(id == null) {
return;
}
int productId = Integer.parseInt(id);
/*********通过ID可以从数据库里面找到该值,这里代码略***********/
PrintWriter out = response.getWriter();
byte[] buffer = pib.getProductImage();// 这里的pib是一个JavaBean的实例,方法返回的是一个byte数组,我用了Hibernate框架,所以在Oracle数据库中的CLOB对应的属性类型是byte[]
InputStream is = new ByteArrayInputStream(buffer);
int a = is.read();
while(a != -1) {
out.print((char)a);
a = is.read();
}
out.flush();
out.close();
}
<img src="/productImg?imgId=<jsp:getProperty property="productId" name="product"/>"><%--productId是javaBean中的属性对应数据库里面的id字段,也就是上面所说的ID,product是javaBean的实例,与上面pib属同一个类型--%>
PrintWriter 对象和jsp中的out内置对象不是一个东西,读代码要求甚解,以后很多问题就可以自主解决了
<%@ page contentType="image/jpeg" %> //声明此页面用于显示图片InputStream is = resultSet.getBinaryStream("pictrue"); //数据库读取图片ServletOutputStream os = response.getOutputStream(); //数据显示在页面上
int readlen = -1;
byte readbuf[] = new byte[5120];
while( (readlen = is.read(readbuf,0,5120)) != -1 ){
os.write(readbuf, 0, readlen);
}
is.close();
os.close();