0

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);
}

しかし、私はこの種の状況のようには理解していません。

4

1 に答える 1

1

BLOB タイプを直接 html (jsp) コードに出力することはできません。これは、やろうとしてもうまくいきません。

私が提案するのは、画像を出力するサーブレットを作成することです。これを行う方法を参照してくださいデータベースから画像を取得し、サーブレット経由で JSP に表示する方法は? .そして、あなたのコードでサーブレットを次のように呼び出すだけです:

<img src='path_to_servlet/ServletName?imageId=xxx'>
于 2013-10-10T06:16:52.070 に答える