2009-05-14 14 views
6

私はいくつかの調査を行いましたが、私が見つけた例の大部分はデータを収集してリクエストオブジェクトを通じて別のJSPページに渡すためのフォームを使用しています。JSPでHTMLフォームを使用しないパラメータを渡す

私の質問は:パラメータがHTML <form>タグで設定されていない場合、JSPページ間でパラメータを渡すことは可能ですか?

+1

私には、「JSPページ間でパラメータを渡す」という意味が完全にはっきりしていませんか?それらのJSPページは、ブラウザからの別個の要求か、それともサーバー側の要求ディスパッチですか? どのようなパラメータを渡しますか?ユーザー入力、処理/ユーザー状態、...? – rudolfson

答えて

5

JSPページは、例えば、手動で構築GETのURLの違いを伝えることができる方法はありません:

<a href="/foo.jsp?bar=baz">Go to the next JSP page</a>、何か対:

<form method="get" action="/foo.jsp"> 
<input name="bar" value="baz"> 
</form> 

それはgetParameterまたはgetParameterValuesを介してアクセスすることができるいずれかの方法は、

あなたが求めていることはありますか?

3

通常、サーブレット/ JSPページまたはJSPページ間で、スコープ付き属性(要求、セッションまたはアプリケーション内)でデータを渡します。例えば。 request.setAttribute("key", data)は1つのJSPで "key"属性を設定でき、request.getAttribute("key")は他のJSPでこのデータを取得します(複数のJSPが同じ要求を処理している場合)。

リクエストをラップし、getParameterとそれに似たメソッドをオーバーライドして、本当に必要な場合は、偽のパラメータを作成することができます。

更新:私の答えは、すべての同じ要求を処理するいくつかのパーティー間でデータを渡すことについて話しています。あなたの質問がはっきりしないので、これはあなたが望むものかもしれません。

17

あるJSPページから別のJSPページに情報を渡すには、いくつかの方法があります。

1.非表示の値。

タイプが「非表示」のフォーム内の入力フィールドにデータを書き込むだけです(例:

<input type="hidden" name="mydata" value="<%=thedata%>"> 

このように書かれたデータは、関連フォームが提出されたときにポストバックされます。これは、ユーザーがすべての状態がユーザー側であり、前後のボタンが期待通りに機能するため、一連のダイアログをユーザーが入力するときに情報を持ち歩くのに便利な方法です。

2. URL書き込み。

ページのリンクのURLにパラメータを添付します。

<a href="another.jsp?mydata=<%=thedata>>Go!</a> 

提出するフォーム要素の必要性を除去しながらこれは、クライアントとの状態を維持しています。

3.クッキー。

状態はまだユーザー側ですが、現在はクッキーによって処理されています。いくつかの人々はクッキーを無効にするため、いくつかの点でより脆弱です。また戻る]ボタンや[進む]ボタンは、予想外のことを行うことがあります慎重

4.サーバー側(セッション)

ない場合は最後に、あなたは1 JSPのセッション変数にデータを保存し、次回にそれを取得することができ、例えばここで

session.setAttribute(String key, Object value) 

session.getAttribute(String key) 

状態は、(ユーザーが離れてブラウズし、彼の場所を失うことなく返すことができ、いくつかの利点があり、サーバー側を保ったが、中に戻る]ボタンや[進む]ボタンを作成する傾向がありますあなたが注意しない限り少し信頼できないブラウザです。また値はすべてのページで利用可能です。

しかし、情報がクライアントに送信されることはないため、より安全であり、改ざんのない証明です。

+0

第5の方法は、サーバー側のPOSTを作成することです。 –

関連する問題