数据库中照片怎么在jsp中显示

数据库中照片怎么在jsp中显示,第1张

用JSP从数据库中读取图片并显示在网页上:

环境mysql+tomcat:

<1>先在mysql下建立如下的table. 并insert图像

mysql.sql文件如下:

CREATE TABLE photo (

photo_no int(6) unsigned NOT NULL auto_increment,

image blob,

PRIMARY KEY (`photo_no`)

)

<2>把show.jsp放在tomcat的任意目录下. show.jsp作用:从数据库中读出blob,并产生image/jpg.

show.jsp文件如下:

<%@ page contentType="text/htmlcharset=gbk" %>

<%@ page import="java.io.*"%>

<%@ page import="java.sql.*, javax.sql.*" %>

<%@ page import="java.util.*"%>

<%@ page import="java.math.*"%>

<%

String photo_no = request.getParameter("photo_no")

//mysql连接

Class.forName("com.mysql.jdbc.Driver").newInstance()

String URL="jdbc:mysql://localhost:3306/job?user=root&password=111111"

Connection con = DriverManager.getConnection(URL)

//oracle连接

//String URL="jdbc:oracle:thin@localhost:1521:orcl2"

//user="system"

//password="manager"

//Connection con = DriverManager.getConnection(URL,user,password)

try{

// 准备语句执行对象

Statement stmt = con.createStatement()

String sql = " SELECT * FROM PHOTO WHERE photo_no = "+ photo_no

ResultSet rs = stmt.executeQuery(sql)

if (rs.next()) {

Blob b = rs.getBlob("photo_image")

long size = b.length()

//out.print(size)

byte[] bs = b.getBytes(1, (int)size)

response.setContentType("image/jpeg")

OutputStream outs = response.getOutputStream()

outs.write(bs)

outs.flush()

rs.close()

}

else {

rs.close()

response.sendRedirect("./images/error.gif")

}

}

finally{

con.close()

}

%>

<3>把如下文件放在show.jsp的同一目录下.

index.html文件如下:

<HTML>

<HEAD>

<TITLE>图像测试 </TITLE>

</HEAD>

<BODY>

<TABLE>

<TR>

<TD>图像测试</TD>

</TR>

<TR>

<TD><img src="show.jsp?photo_no=2"></TD>

</TR>

</TABLE>

</BODY>

</HTML>

jsp是靠加载图片路径来显示图片的,图片可以保存在项目中,也可以保存到磁盘的某个路劲下。

图片放webroot下,一般是webroot下建一个img或pic

文件夹专门存图。

jsp使用的时候<img

src"<%=request.getContextPath()%>/pic/mypic.gif"/>

这样就可以加载到图片了。

代码不全,也就不能仔细说了,就事论事吧

1.你要注意,数据库里存的图片的路径是绝对路径还是相对路径,如果测试阶段总是图片出问题,先暂时换成绝对路径,测试通过说明代码没问题了,再换成相对路径。

2.如果采用相对路径的话,推荐加上basepath设置,以下来自myEclipse:

<%

String path = request.getContextPath()

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"

%>

<base href="<%=basePath%>">

这样的话,路径就都有了统一的参照点,就不容易出问题了。

3.你的代码我没去试,不过我的图片显示一般是通过<img/>标签,毕竟有专门给的,还去写麻烦的干啥,而且写js的时候也方便。

4.搜狗浏览器有两个内核,一个IE,另一个忘记了,没怎么用过。IE内核对好多的东西是支持很差(但。。至少图片显示不会有问题的。。。。不用说,你冲着路径方向找吧!),开发起来让人反胃,但奈何人家客户群大,将就吧,没办法。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存