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>