1. ホーム
  2. java

[解決済み] javascriptからjavaサーブレットを呼び出す [重複]。

2022-02-14 06:08:10

質問内容

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を使いこなすには?