HttpServletResponseのオブジェクト
クライアントにデータを送信する方法:
- OutputStreamオブジェクトは、のgetOutputStream()メソッドによって得られ、その後の書き込みを介して送信されます
- PrintWriterオブジェクトは、にgetWriter()メソッドによって得られ、その後の書き込みを介して送信されます
レスポンスヘッダを送信する方法:
- addDateHeader(java.lang.Stringで名前、長いデータ)
- addHeader(java.lang.Stringで名前、文字列値)
- addIntHeader(java.lang.Stringで名、int型の値)
- setDateHeader(java.lang.Stringで名前、長いデータ)
- setHeader(java.lang.Stringで名前、文字列値)
- setIntHeader(java.lang.Stringで名、int型の値)
- setStatus(int sc)メソッド
ストリームをOutputStreamの使用
=データ列" LZJ " ; のOutputStreamのOutputStream = response.getOutputStream(); response.setHeader(" コンテンツタイプ"、" texy / HTML;のcharset = UTF-8 " ); バイト [] = dataByteArr data.getBytes(" UTF -8 "); //は、UTF-8エンコーディング変換で指定されたバイト配列に文字を変換する。 OutputStream.write(dataByteArr)。
PrintWriterストリームを使用します
=データ列" LZJ " ; response.setHeaderEncoding(" コンテンツタイプ"、" Hext / HTML;のcharset = UTF-8 "); // UTF-8としてエンコードされた表示データに応答して制御ヘッド。 PrintWriter OUT = response.getWriter(); OUTの .WRITE(データ);
手順のバイトをスワップする必要がなくなり、より便利になり、クライアントは通常、ブラウザの文字データに出力のPrintWriter出力を使用見つけるのは難しいように、これらの2つの方法の比較。
そして、これら二つのアプローチは相互に排他的であることに注意することは、つまり、次々に呼び出すことはできません呼び出します。
また、データは文字列のデジタル出力に出力されます。
OutputStream.write(1 ); PrintWriter.write(1); // ブラウザを介して両方のアプローチが出力されない番号1 OutputStream.write(1 + "" ;) (PrintWriter.write 1 + ""); / / 空の文字列、数字列1を加えた後の1は、それが正常にブラウザにエクスポートすることができ、1になる場合、
ファイルのダウンロードのためのレスポンスを使用します
機能をダウンロードし、ファイルを書き込むときのOutputStreamストリームはバイトストリームに変換されて、あなたがそのようなデータ・バイトタイプの処理として、あらゆる種類のデータ、および文字ストリームのPrintWriterストリーム、唯一の文字型のデータ処理を、処理することができ、OutputStreamのストリームを使用することが好ましいです簡単にデータの損失につながります。
実装手順ダウンロードしたファイル:
- ダウンロードしたファイルの絶対パスを取得します。
- ダウンロードしたファイル名を取得します。
- 開いたファイルをダウンロードするには、ブラウザを制御するためのコンテンツ配置レスポンスヘッダを設定します。
- ダウンロードしたファイルの出力ストリームを取得するには
- バッファを作成します。
- OutputStreamのストリームを作成します
- 入力ストリームバッファを書きます
- OutputStreamを経由してブラウザへのデータ出力バッファを使用して
realpath =文字列この .getServletContext.getRealPath(" /xxxx/1.jsp "); //は、ダウンロードしたファイルへの絶対パスを取得する 文字列filename = realPath.substring(realPath.lastIndexOf(" \\ ")+ 1); // 取得します。ダウンロードファイル名 response.setHeader(「コンテンツ配置」、「添付ファイル、ファイル名= 」 + URLEncoder.encode(ファイル名、「UTF-8 」)); // フォームをダウンロードするファイルブラウザを開くための制御に応じて、コンテンツ配置ヘッダを設定しますそして、ファイル名はUTF-8形式で表示させ たInputStream に = 新新FileInputStreamを(実パス); // 取得した入力ストリームファイルの バイト []バッファ= 新しい新しい バイト [ 1024 ]; // バッファ作成し たOutputStream OUT = response.getOutputStream(); // 作成したOutputStreamストリーム // 入力ストリームをバッファに書き込まエリア INT LEN = 0 ; ながら((LEN = で .read(バッファ))> 0 ){ OUT .WRITE(バッファ、0 、LEN); } // データバッファのOutputStreamを介してブラウザに出力される には。近いです();
応答共通レスポンスヘッダ
response.setDateHeader(「expries 」、 - 1); // 無効にブラウザのキャッシュ現在のドキュメントのコンテンツ response.setHeader(「リフレッシュ」、「X 」); //は、x秒ごとにリフレッシュするためにリフレッシュ制御にブラウザを設定し 、応答を。 setStatus(「XXX 」); // ステータスコードセット Response.sendRedirect(文字列の位置); // リダイレクトのsendRedirect()メソッドで応答オブジェクトを呼び出します。
ポジションは「/」Webプロジェクトの略
サーバは、現在のWebプロジェクトを代表して、使用する場合は、のような:
- ServletContext.getRealPath(文字列のパス)、「/」を表すウェブプロジェクトの最初のパス
- フォワード。This.getServletContext()getRequestDispatcher( "/ XXXX")(リクエスト、レスポンス);.フォワード実現フォワードサーバには使用されているので、 "/" Webプロジェクトを示し
- 使用すると、タグ導入のページを含めるか、<jsp.include>
<%@は=ファイルを含める" /xxx/xxx/xxx.jspを"%> の<jsp:含めるページ= " XXX / XXX / xxx.jsp " />
ブラウザが使用する場合は、webappsディレクトリを表し;など:
- response.sendRedirect(「/ XXX / XXX / XXX」)、ブラウザをリダイレクトするために使用され、それが最初である「/」は、Webアプリケーションのディレクトリを示しています。
- ハイパーリンクを使用して
<aのHREF = "/xxx/xxx/xxx.jsp"> XXX <A>
- フォームフォームの送信
<フォームアクション= " / XXX / XXX / XXX "メソッド= " ポスト" >
- jsのスクリプトやCSSスタイル参照
通常、私たちはプロジェクトの名前を変更した場合でも、コードの開発をより柔軟に、変更する必要がないように、request.getContextPath()は、「/プロジェクト名」に相当することを代わりにWebプロジェクト名のrequest.getContextPath()を使用します。