JavaのResonseオブジェクト
5479 ワード
Resonseオブジェクト
一、Resonse原理と継承構造
原理と継承構造はrequestを参照する.
二、Resonseオブジェクト
Resonseとは応答メッセージを設定するためのものです.
1、応答行の設定
応答ヘッダのフォーマット:
2、応答ヘッダの設定
応答ヘッダ情報を設定:
3、応答体の設定
使用手順:
(1)出力ストリームの取得
4、リダイレクト完了
(1)リダイレクト:リソースジャンプの方式.
(2)コード実現:
リダイレクトの特徴:[重要]
①アドレスバーに変化を送信する
②リダイレクトは他局(サーバ)のリソースにアクセスできます.
③リダイレクトは2回の要求であり、requestオブジェクトを使ってデータを共有することはできません.
転送を要求する特徴:[重要]
①転送先バーのパスは変更されません.
②転送は現在のサーバの下のリソースにのみアクセスできます.
③転送は一回の要求で、requestオブジェクトを使ってデータを共有することができます.
(4)経路問題
相対パス:パスを介して一意のリソースを決定することはできません.
例えば:/index.
特徴:はじめに
ルール:現在のリソースとターゲットリソースの相対位置関係を見つける
./:現在のディレクトリを表示
./:後退が前のレベルのディレクトリに戻ることを示します.
絶対パス:絶対パスを通して固有のリソースを決定することができます.
例えば:http://localhost/web/demo1
特徴:はじめに
ルール:定義されたパスは誰に使うかを判断して、将来どこから出すかを判断します.
①クライアントブラウザへの使用:仮想ディレクトリ(プロジェクトのアクセスパス)が必要です.
ページのハイパーリンク、フォームフォーム、リダイレクトなど.
注意:仮想ディレクトリを書き込み死ぬことは勧められません.普通は動的に取得します.取得方法:
例えば:転送パス;
5、サーバからブラウザに文字データを出力する
ステップ:
(1)文字出力ストリームを取得する
(2)出力データ
コードの実装:
上記のように、英語をページに出力するのは問題ないです.HTMLタグも正常に解析されますが、中国語を出力すると文字化けが発生します.
文字化けの問題:
解決の文字化け:
注意:ストリームを取得する前に必ずコードを設定してください.
6、サーバがバイトデータをブラウザに出力する(一般的にはテキスト以外の転送に使用される)
ステップ:
(1)バイト出力ストリームを取得する
(2)出力データ
コードの実装:
転載先:https://www.cnblogs.com/niujifei/p/11620148.html
一、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