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>