2

特定のIPjspによって共有されている共有ファイルのリストを表示する必要がある があるとします。クライアントは自分のローカル サーバーでそれを開き、要求がリモート サーバーに送信されてリストが取得されます。jsp

Servletサーバー上でリクエストを処理し、その IP によって共有されているファイルのリストをフェッチします。サーブレットは、そのリストを要求した JSP ページにどのように送信するのでしょうか。

JSP :

connection.openConnection(); // Connection sends IP as the query parameter to the 
                             // remote servlet

Servlet :

doGet(..parameters..) {
 list = getList(forThatIP);
 // NOW HOW DO I SEND THIS LIST ?
}

私が考えた1つの方法は、データ全体をクエリ文字列としてクライアント側のサーブレット(Tomcatなどのサーバーを実行)に送信し、そのリストをいくつかのファイルに隠しておくことでした。後でjspはファイルを解析してデータを表示できます。しかし、それは良い選択肢ではないようです。

注: JSP は、IP をリモート サーブレットに正常に送信した後、サーブレットが転送するときに呼び出されます。

4

4 に答える 4

1

サーブレットで request.setAttribute() を使用できます。その後、JSP タグを使用して JSP で値を取得できます。そこはちょっと調べて。

編集 :

サーブレット doGet メソッドでは、次のように listOfFiles などの属性を設定できます。

resquest.setAttribute("listOfFiles",list);

次に、JSP で EL 式を使用して取得できます。

${listOfFiles}

これは JSP の組み込み機能です。

または、次を使用してアクセスできます

<% request.getAttribute("listOfFiles")%>

しかし、JSP 内に Java スクリプトレットを埋め込むのは良くありません。

于 2013-01-23T13:18:32.257 に答える
0

コードからサーブレットを呼び出す場合、最善の方法は HttpServlet を使用してブラウザの動作を模倣することです。

URL でデータを渡すことはGET要求です。比較的小さなデータのチャンクでのみ役立ちますが、セマンティクスは希望どおりに見えます (「少しのデータを取得する」)。のようなものhttp://myremoteserver.com/myServlet?ip=...。パラメータを適切にエンコードする必要があります (Java API で処理できます)。

ストリームへの書き込みによるデータの受け渡しがPOSTリクエストになります。サーバーに渡されるデータに制限はありませんが、セマンティクスは異なります (「システム内の何かを変更する」)。書き込まれたコンテンツ内のパラメーターとしてデータを渡すことができますが、それをデコードする方法がよくわかりません。もう 1 つの方法は、Servlet(no HttpServlet) を使用して生データを処理することです。

どちらの場合も、応答は接続出力ストリームで返されます。好きな形式を使用できます (独自の XML を定義する場合でも、おそらく JSON のような標準的な形式が最適です)。この場合、実行可能な代替手段は、「安全な」文字 (\nまたは など|) で区切られたファイル名です。迅速ですが、将来的には柔軟性が低下します。

GET私はリクエストに行きJSON encodingます。

于 2013-01-23T13:33:56.390 に答える
0

接続を介して複雑なデータ (リストなど) を渡す場合は、JSON または XML の使用を検討できます。JSP コードは、適切なライブラリを使用して簡単に解析できる必要があります。

于 2013-01-23T13:19:56.290 に答える
0

実際には、jsp の呼び出し方法によって異なります。

それに投稿しますか?サーブレットは転送を実行しますか? それとも sendRedirect() ですか?

これによると、jsp にデータを送信する方法はたくさんあります。1 つは、リクエスト スコープの Bean を使用して、リクエスト属性またはそれ以上のものを使用することです。もう 1 つは、リストのある種のラッププレゼンテーションを投稿パラメーターとして投稿できます (json、xml、または独自のカスタム形式)。

考慮すべきもう1つのことは、何を使用していますか? JSF ? いくつかの春のライブラリ?それによると、データを送信するための他のより良い(またはより悪い)方法があるかもしれません。

小さなプロジェクトで単純な JSP/サーブレットを使用する場合、個人的には request.setAttribute() の方法を使用します。実際、これにより、次のような方法で jsp を呼び出す必要があります

request.setAttribute("myList", yourListObject);
request.getRequestDispatcher("yourjsp.jsp").forward(request, response);

次に、jsp で次のことができます。

<% Object myListObj = pageContext.getRequest().getAttribute("myList"); %>
于 2013-01-23T13:23:57.303 に答える