JavaのResonseオブジェクト

5479 ワード

Resonseオブジェクト
一、Resonse原理と継承構造
原理と継承構造はrequestを参照する.
二、Resonseオブジェクト
Resonseとは応答メッセージを設定するためのものです.
1、応答行の設定
      応答ヘッダのフォーマット:
HTTP/1.1 200 ok
状態コードを設定:
setStatus(int sc);  // sc    
  
2、応答ヘッダの設定
応答ヘッダ情報を設定:
setHeader(String name, String value);//  name             
  
3、応答体の設定
使用手順:
(1)出力ストリームの取得
     :PrintWriter getWriter()
     :ServletOutputStream getOutputStream()
(2)出力ストリームを使用して、クライアントブラウザにデータを出力します.
4、リダイレクト完了
(1)リダイレクト:リソースジャンプの方式.
(2)コード実現:
//1.       302
response.setStatus(302);
//2.     location
response.setHeader("location","/web/demo2");

//        (  )
response.sendRedirect("/web/demo2");
(3)リダイレクトの特徴
リダイレクトの特徴:[重要]
①アドレスバーに変化を送信する
②リダイレクトは他局(サーバ)のリソースにアクセスできます.
③リダイレクトは2回の要求であり、requestオブジェクトを使ってデータを共有することはできません.
       転送を要求する特徴:[重要]
①転送先バーのパスは変更されません.
②転送は現在のサーバの下のリソースにのみアクセスできます.
③転送は一回の要求で、requestオブジェクトを使ってデータを共有することができます.
(4)経路問題
          相対パス:パスを介して一意のリソースを決定することはできません.
               例えば:/index.
               特徴:はじめに
               ルール:現在のリソースとターゲットリソースの相対位置関係を見つける
                  ./:現在のディレクトリを表示
./:後退が前のレベルのディレクトリに戻ることを示します.
          絶対パス:絶対パスを通して固有のリソースを決定することができます.
               例えば:http://localhost/web/demo1
               特徴:はじめに
               ルール:定義されたパスは誰に使うかを判断して、将来どこから出すかを判断します.
①クライアントブラウザへの使用:仮想ディレクトリ(プロジェクトのアクセスパス)が必要です.
ページのハイパーリンク、フォームフォーム、リダイレクトなど.
注意:仮想ディレクトリを書き込み死ぬことは勧められません.普通は動的に取得します.取得方法:
request.getContextPath()
②サーバに使用する:仮想ディレクトリは不要
例えば:転送パス; 
5、サーバからブラウザに文字データを出力する
ステップ:
(1)文字出力ストリームを取得する
(2)出力データ
コードの実装:
1 //1.       
2 PrintWriter pw = response.getWriter();              ISO-8859-1
3 //2.    
4 //pw.write("

hello response

");
5 pw.write(" response");
 
上記のように、英語をページに出力するのは問題ないです.HTMLタグも正常に解析されますが、中国語を出力すると文字化けが発生します.
文字化けの問題:
    
 解決の文字化け:
 1 //       ,        :ISO-8859-1    :utf-8
 2 // response.setCharacterEncoding("utf-8");
 3 //     ,              。            
 4 //response.setHeader("content-type","text/html;charset=utf-8");
 5 
 6 //
 7 response.setContentType("text/html;charset=utf-8");
 8 
 9 //1.       
10 PrintWriter pw = response.getWriter();
11 //2.    
12 //pw.write("

hello response

");
13 pw.write(" response");
 
注意:ストリームを取得する前に必ずコードを設定してください.
6、サーバがバイトデータをブラウザに出力する(一般的にはテキスト以外の転送に使用される)
ステップ:
(1)バイト出力ストリームを取得する
(2)出力データ
コードの実装:
1  //           
2  response.setContentType("text/html;charset=utf-8");
3 
4  //1.       
5  ServletOutputStream sos = response.getOutputStream();
6  //2.    
7  sos.write("  ".getBytes("utf-8"));
 
転載先:https://www.cnblogs.com/niujifei/p/11620148.html