イントラネットhttpサーバーからバイナリファイルを読み取り、パブリックにダウンロードする必要があります。イントラネットからJSPをダウンロード
SCHEMA
イントラネットのファイルサーバ(Apacheの)= 1 < - ファイルシステムに保存せずに>インターネット承認されたユーザー= 3
ハウツーリリースこの - >公共HTTPサーバ(Apache Tomcatの)= 2 < on server 2
私はJavaで新しいです。
私の英語のために申し訳ありません。
イントラネットhttpサーバーからバイナリファイルを読み取り、パブリックにダウンロードする必要があります。イントラネットからJSPをダウンロード
SCHEMA
イントラネットのファイルサーバ(Apacheの)= 1 < - ファイルシステムに保存せずに>インターネット承認されたユーザー= 3
ハウツーリリースこの - >公共HTTPサーバ(Apache Tomcatの)= 2 < on server 2
私はJavaで新しいです。
私の英語のために申し訳ありません。
java.net.URL(または別のhttpクライアント)を使用して1から読み取り、それを(3に応答して)印刷します。
(Apache Http ServerまたはNginxでは、リバースプロキシを使用してこれを実現できます)
私はこのような状況では二つの方法を考えることができます:
:標準タグライブラリを使用して
<% response.sendRedirect("http://intranet_address");%>
または
<c:redirect url="http://intranet_address"/>
。サーブレットページの使用では
:
response.setStatus(302);
response.setHeader("Location", "http://intranet_address"); or just
response.sendRedirect("http://intranet_address");
私はイントラネット上で最初のアプローチを試したことはありませんが、イントラネットアドレスがインターネットユーザーにとって有効ではないという事実を考えれば、それはうまくいくとは思いません。
ここでは、プロキシレイヤを使用する2番目のアプローチしか残っていません。プロキシ関数は多くの方法で実装することができます:シンプルなものはサーブレットの背後にあるBeanで、ファイルサーバー1へのURLを開き、ファイルを読み込んでサーブレット応答ストリームを介してユーザーに送信したり、埋め込まれたHTTPClient。
編集:バイナリファイルをダウンロードする予定なので、JSPは適していません。テキストデータを扱うことを意図しています。バイナリストリームを行うにはServletが必要です。あなたはHttpServletResponseの上、以下のようなものを設定することができます。
resp.setContentType("application/octet-stream");
resp.setContentLength(length);
resp.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
ので、コンテンツが設定した名前の添付ファイルとして送信されます。