jquerymobile+jspでアプリを作っています
構造は、通常の servlet-jsp MVC とは異なります。
データを直接取得し、このように出力します。
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%! Connection con=null; %>
<%! Statement st= null; %>
<%
try {
ResultSet rs= null;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/first_app";
String user = "root";
String password = "test";
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url, user, password);
try {
String sql = "SELECT * FROM lunch_menu";
PreparedStatement ps = con.prepareStatement(sql);
rs = ps.executeQuery();
%>
<div data-role="page">
<div data-role="header">
<h1>MENU PAGE</h1>
<a href="#" data-rel="back" data-icon="arrow-l">Back</a>
</div>
<div data-role="content">
<ul data-role="listview">
<!--
<li><img src="/FirstApp/assets/img/1.jpg" />2013-10-08 똥맛카레</li>
<li><img src="/FirstApp/assets/img/2.jpg" />2013-10-08 카레맛똥</li>
-->
<%
while(rs.next()){
Blob image = null;
image = rs.getBlob("lunch_image");
out.print("<li>");
//prints com.mysql.jdbc.Blob@2d58497c
out.print(rs.getBlob("lunch_image"));
//prints [B@686fdca5
//out.print(image.getBytes(1,(int)image.length()));
out.print("</li>");
}
} catch (SQLException e) {
e.printStackTrace();
}
}catch(ClassNotFoundException ce){out.println(ce);}
%>
</ul>
</div>
</div>
私がコメントしたように、
BLOB 型のデータが存在することを確認しましたが、データの表示方法がわかりません。これがjspサーブレットだった場合、私はこのようにしなければならないことを知っています。
InputStream in = image.getBinaryStream();
int length = (int) image.length();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
しかし、私はこの種の状況のようには理解していません。