jsp与数据库的面对面交流
前言:要完成数据的交互的一种方式就是jsp+jsp+数据库。下面就来演示一个用jsp展示数据库内的图片的小例子。
准备工作:
在数据库中新建一张存放图片的表。
新建两张jsp页面,分别是MyJsp1.jsp (处理连接) 和 MyJsp2.jsp (展示图片)。
实施:
建表
create table img (
id int auto_increment primary key,
name varchar(100) ,
image blob //blob是数据库中存放图片的类型
)
MyJsp1.jsp
<%@ page contentType="text/html; charset=gbk" %>
<%@ page import="java.io.*"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.math.*"%>
<%String id = request.getParameter("id"); // 接收参数
//mysql连接
Class.forName("com.mysql.jdbc.Driver").newInstance();
String URL="jdbc:mysql://localhost:3306/img?user=root&password=123";
Connection con = DriverManager.getConnection(URL);
System.out.println(con); //测试连接数据库是否成功
//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 img WHERE id = "+ id;
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
Blob b = rs.getBlob("image"); //获取表的image字段,即图片的二进制
long size = b.length(); //计算图片长度
byte[] bs = b.getBytes(1, (int)size); //放入数组
response.setContentType("image/jpg"); //设置给响应的页面一个的响应的内容格式为图片
OutputStream outs = response.getOutputStream(); // 使用输出流
outs.write(bs); //将数组写入输出流
outs.flush(); //刷新输出流
rs.close(); //关闭结果集
}
else {
rs.close();
}
}
finally{
con.close(); //关闭连接
out.clear();
out = pageContext.pushBody();
}
%>
MyJsp2.jsp
<body>
<img src="MyJsp1.jsp?id=1">
</body>