Java代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JdbcImgDAO {
//数据库连接方法
public static Connection getConnection(){
String url="jdbc:oracle:thin:@192.168.0.100:1521:testdb";
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url,"user","pwd");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//插入图片到案例库,id为主键,s为上传图片(路径+图片名)
public static void updateImg(String id, String s){
Connection conn = getConnection();
String sql="update table t set t.img=? where id=?";
File filename=new File(s);
//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;
try {
//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);
PreparedStatement ps =conn.prepareStatement(sql);
ps.setBinaryStream(1,fis,l2);
//ps.setBinaryStream(1,fis,fis.available());
ps.setString(2,id);
ps.executeUpdate();
ps.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
显示图片页
img.jsp
<%@ page contentType="text ml; charset=gbk"%>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*, javax.sql.*"%>
<%@ page import="java.util.*"%>
<%
String id = request.getParameter("id");
String URL="jdbc:oracle:thin:@192.168.0.100:1521:testdb";
String user="user";
String password="pwd";
Connection con = DriverManager.getConnection(URL,user,password);
InputStream in = null;
ResultSet rs = null;
OutputStream out = response.getOutputStream();
try{
Statement stmt = con.createStatement();
String sql = "select t.img from table t where id="+id;
rs = stmt.executeQuery(sql);
while(rs.next()) {
in = rs.getBinaryStream("img");
int len = 0;
byte[] byte = new byte[1024];
//response.setContentType("image/jpeg");
while ((len = in.read(byte)) != -1) {
out.write(byte,0,len);
}
out.close();
in.close();
}
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
con.close();
}
%>
显示信息页面
<img src="img.jsp">
如若多显示:则思路如下:
设置文件头是图片类型.那么它会把整个返回内容作为一张图片的内容来显示
response.setContentType( "image/jpeg ");
这是二次响应问题..
应该先把整个页面的代码 <html> 输出.
在要显示图片的地方 连接到servlet
response.setContentType( "image/jpeg ");
这是二次响应问题..
应该先把整个页面的代码 <html> 输出.
在要显示图片的地方 连接到servlet
<html>
<table>
<tr>
<td>
<img scr= "servlet的连接........... " > <!--图片1的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片2的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片3的连接-->
</td>
</tr>
</table>
<html>
<table>
<tr>
<td>
<img scr= "servlet的连接........... " > <!--图片1的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片2的连接-->
</td>
<td>
<img scr= "servlet的连接........... " > <!--图片3的连接-->
</td>
</tr>
</table>
<html>