レスポンス組成
-
ステートライン
-
レスポンスヘッダ
-
空行
-
レスポンスボディ
ステートライン
ステータスライン - > HTTP +バージョン、ステータスコード/ステータス+状態説明
ステータスコード:顧客の要求の状態を知らせる、成功または失敗
100〜199:要求が出されたが、応答受信しませんでした200〜299:要求識別し、成功応答
ステータス説明:ステータスコードの記述
一般的なステータスコード
一般的なステータスコード | ステータス説明 |
---|---|
200 | 正常な応答、要求が成功したことを示します |
302 | リソースが削除されている、あなたはどこか別の要求を移動する必要があります |
304 | リソースへのアクセスがキャッシュから取得される表します |
400 | 問題のクライアントから送信されたパラメータ |
404 | 一般的に誤記リソース/ URLを見つけることができません |
405 | 誤っ要求 |
500 | サーバー側の異常 |
502 | サーバーのダウンタイム |
コンフィギュレーションのステータスコードファイル
役割:露光コード情報を防ぐために
<! - web.xmlファイルに書かれた- > <! - 構成エラー・ページ- > < エラーページ> <! - ステータスコード- > < エラーコード> 500 </ エラーコード> <! - 制定されたエラーページに移動- > < LOCATION > /html/fuwei.html </ LOCATION > </ エラーページ>
ステータスコードを設定します
// (知っている)を設定ステータスコード resp.setStatus(208 ); resp.setStatus(HttpServletResponse.SC_NOT_FOUND); // カスタム記述(それを知っている) resp.sendError(404、「URL異常チェックのURLアドレスが正しいですか「)。
コンテンツのニーズがキャッシュされるべきかどうか、バックボリュームサイズのクラス、サーバ応答時間のバージョン(例えば、TXT、MP4 ...の送信など)を設定レスポンスヘッダタイプ。
全体的に、メッセージは、クライアント・サーバ・て送信バックを伝えることです。
一般的なレスポンスヘッダ
-
コンテンツディスポジション:フォームは、クライアントがオープンにファイルをダウンロードした告げます
アプリケーション - ファイルのダウンロード
保護された 空のdoPost(REQはHttpServletRequestを、HttpServletResponseのRESP)スローServletExceptionが、IOExceptionが{ // 最初のステップを:ダウンロードしたファイルの名前を取得する 文字列fileNameに= req.getParameter( "ファイル名" ); // ステップ2:ファイル拡張子を取得 文字列を= fileName.substring EXT(fileName.lastIndexOf( "" )); // 第三段階:GET A UUID(新しい名前をファイルをダウンロードするために) 文字列newfilename = UUID.randomUUID()のtoString();. // ステップ4:レスポンスヘッダのContent-処分を設定します。フォームは、ダウンロードしたファイルを開くには、クライアントに指示します resp.setHeader(「コンテンツ・処分」、「添付ファイルを、ファイル名=」+ newfilename + EXT); // ステップ5:ダウンロードファイルを取得物理パス DownPath =文字列この .getServletContext()getRealPath( "DownloadImage /" +。ファイル名); // ステップ6:完全なダウンロード // ファイルの作成 ファイルファイルを= 新しい新しいファイル(downPath); // 入力ストリーム =でのInputStream はnull ; // の出力ストリーム得る ServletOutputStreamをOUT = )resp.getOutputStreamを(; 試み{ に = 新しい新規のFileInputStream(ファイル); // ストリームバッファ バイト [] = BUF 新しい新しい バイト [1024 ]; //读取字节的长度 INT長さ= 0 。 // 读取文件 ながら(!(長さ= in.read(BUF、0、buf.length))= - 1 ){ out.write(BUF、 0 、buf.length)。 } out.flush()。 } キャッチ(例外e){ e.printStackTrace(); } 最後に{ 場合(!で= NULL ){ in.close()。 } もし(!アウト= NULL ){ out.close()。 } } }