REST API 呼び出しから取得した JavaScript 変数であるセッション キーがあります。サーブレットで Java コードを呼び出し、そのキーをパラメーターとして渡す必要があります。そのためにどの JavaScript 関数を使用できますか?
3 に答える
いくつかの方法:
window.location
GET リクエストを起動するために使用します。警告は、それが同期であることです (そのため、クライアントは現在のページが変更されているのを確認できます)。window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
encodeURIComponent()
要求パラメーターを渡す前にエンコードする組み込み関数の重要性に注意してください。form.submit()
GET または POST リクエストを起動するために使用します。注意点は、同期であることです。document.formname.key.value = key; document.formname.submit();
と
<form name="formname" action="servlet" method="post"> <input type="hidden" name="key"> </form>
または、既存のフォームの非表示フィールドのみを設定し、ユーザーが送信するまで待つこともできます。
バックグラウンドで非同期リクエストを起動するために使用
XMLHttpRequest#send()
します (Ajax とも呼ばれます)。以下の例では、サーブレットのdoGet()
.var xhr = new XMLHttpRequest(); xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key)); xhr.send(null);
以下の例では、サーブレットの
doPost()
.var xhr = new XMLHttpRequest(); xhr.open("POST", "http://example.com/servlet"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send("key=" + encodeURIComponent(key));
jQueryを使用して、クロスブラウザー互換の Ajax リクエストを送信します (上記の
xhr
コードは実際のブラウザーでのみ機能します。MSIE との互換性を確保するには、いくつかの混乱を追加する必要があります ;) )。$.get("http://example.com/servlet", { "key": key });
$.post("http://example.com/servlet", { "key": key });
jQuery はすでにリクエスト パラメータをすべて透過的にエンコードしているため、
encodeURIComponent()
ここでは必要ありません。
いずれにせよ、サーブレットでkey
使用できるようになります。request.getParameter("key")
以下も参照してください。
JavaScript 関数自体はありませんが、ブラウザーは通常* XMLHttpRequestオブジェクトを提供しており、それを実行できます。
YUIやjQueryなどのライブラリは、その使用を簡素化するヘルパー関数を提供します。
* JavaScript をサポートし、Netscape 4 の廃止以降にリリースされたほとんどすべてのブラウザを含む「通常」の値