[解決済み] javascriptからjavaサーブレットを呼び出す [重複]。
質問内容
MVCデザインパターンを使って、Webアプリケーションを作ろうとしています。GUI部分には、JavaScriptを使いたいと思っています。そして、コントローラにはJavaサーブレットを使用します。
JavaScriptを使ったことがないので、JavaScriptからJava Servletを呼び出す方法と、Servletからのレスポンスを取得する方法について苦労しています。
どなたか教えてください。
解決方法は?
つまり
Ajax
をサーブレットに呼び出すのですか?そのためには
XMLHttpRequest
オブジェクトをJavaScriptで作成します。以下はFirefox互換の例です。
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var data = xhr.responseText;
alert(data);
}
}
xhr.open('GET', '${pageContext.request.contextPath}/myservlet', true);
xhr.send(null);
</script>
しかし、これは非常に冗長で、クロスブラウザとの互換性がありません。ajaxical リクエストを発行して HTML DOM ツリーを走査する、クロスブラウザ互換の最良の方法としては jQuery . 以下は、上記をjQueryで書き直したものです。
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.get('${pageContext.request.contextPath}/myservlet', function(data) {
alert(data);
});
</script>
いずれにせよ、サーバー上のServletを
url-pattern
の
/myservlet
(お好みで変更可能です)そして、少なくとも
doGet()
を実装し、以下のようにレスポンスにデータを書き込む。
String data = "Hello World!";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data);
これは、次のように表示されます。
Hello World!
をJavaScriptのアラートで表示します。
を使用することももちろん可能です。
doPost()
を使うべきですが、その場合は
'POST'
で
xhr.open()
または
$.post()
の代わりに
$.get()
をjQueryで実行します。
次に、HTMLページでデータを表示するために HTML DOM . 例えば、あなたが
<div id="data"></div>
の代わりに、レスポンス・データを表示したい HTML の中に記述します。
alert(data)
のように、1つ目の例の
document.getElementById("data").firstChild.nodeValue = data;
jQueryの例では、より簡潔で素晴らしい方法でこれを行うことができます。
$('#data').text(data);
さらに進んで、より複雑なデータを転送するために、簡単にアクセスできるデータ形式が欲しいと思うでしょう。一般的な形式はXMLとJSONです。これらについてのより詳細な例については、以下を参照してください。 サーブレットとAjaxを使いこなすには?
関連
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み] テスト
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】エラー「No enclosing instance of type Foo is accessible」の原因と修正方法について教えてください。
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み] サーブレットとAjaxはどのように使い分ければよいのですか?