1
目的を使って、ビュー上でMySQLからLONGBLOBの写真を表示:AngularJSを使用して、私のhtmlページ上の異なる画像を表示し、ただ1つのサーブレット(画像はリクエストパラメータに応じて変化します[「ID」変数])AngularJS
コード説明:paramsはとして
- IのIDを渡すことによって、サーブレットへリクエストを送る= 13(JS コードを参照)
- サーブレットは、DBに格納された写真は、応答値がされるID = 13
- を有する検索します合格$ scopeの変数 "image"へ
問題:画像は私のビューには表示されません。
エラークロームコンソール: http://localhost:8080/MyProject/%7B%7Bimage%7D%7D 404(見つかりません)
にconsole.log(レスポンス)結果: オブジェクト{データ:」...、状況:200、設定:オブジェクト、STATUSTEXT :}
追加情報 "OK":意志
- を私は "Integer.parseInt(request.getParameter(" ID "))" を "13" から "ID" の割り当てを変更した場合は、私のイメージServlet URLに適切に表示されます。つまり、ファイルが正しく検索され、コード化される。
- "int"の後にSystem.out.println(id)を追加した場合 id = Integer.parseInt(request。getParameter(「ID」))」、正しく、私は私のビューに表示したい
- 写真をサーブレットにJSファイルから渡されparamsをLONGBLOB
-
MY HTML CODE:
...
<img class="images" src="{{image}}"/>
...
-
MY ANGULAR JS CODE:
...
$http.get('./ImagesServlet', {params: {id:13}})
.then(function(response) {
console.log(response)
$scope.image = response.data;
});
...
-
ImagesServlet CODE:
...
int id = Integer.parseInt(request.getParameter("id"));
PoiDao fetcher = new PoiDao();
try {
List<PoiImg> image = fetcher.ImgById(id);
response.setContentType("image/png");
Blob img = image.get(0).getPhoto();
InputStream in = img.getBinaryStream();
int length = (int) img.length();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
while ((length = in.read(buffer)) != -1) {
response.getOutputStream().write(buffer, 0, length);
}
} catch (ClassNotFoundException | SQLException e1) {
e1.printStackTrace();
}
...
ありがとう、あなたはきれいになりたい場合は、最後にHTMLページから
にアクセスできるURLにこれを変換しますあなたは素晴らしいです:) 状況は正常に動作し、画像は表示されますが、まだこのエラーがあります。 GET http:// localhost:8080/MyProject /%7B%7Bimage%7D%7D 404(見つかりません)。 何ができますか? – Larsen
404は、サーバが存在しないものにアクセスしようとしていると言っていることを意味します。 –
404 - 見つからないsrcの代わりにng-srcディレクティブを使用して解決されました:) – Larsen