サーブレット要求および応答オブジェクト

要求オブジェクトと応答オブジェクトの原則
(1)tomcatサーバーは、要求されたURLのリソースパスに従って、対応するServletDemoオブジェクトを作成します。
(2)Tomcatサーバーは要求オブジェクトと応答オブジェクトを作成し、要求オブジェクトは要求されたメッセージデータをカプセル化します。
(3)Tomcatは、要求オブジェクトと応答オブジェクトをサービスメソッドに渡し、サービスメソッドを呼び出します。
(4)プログラマは、リクエストオブジェクトを通じてリクエストメッセージデータを取得し、レスポンスオブジェクトを通じて
レスポンスメッセージデータを設定できます(5)サーバーは、ブラウザに応答する前に、プログラマが設定したレスポンスメッセージデータをレスポンスオブジェクトから取得します。

リクエストオブジェクトとレスポンスオブジェクトの原則
(1)リクエストオブジェクトとレスポンスオブジェクトはサーバーによって作成され、使用されます。
(2)リクエストオブジェクトを使用してリクエストメッセージを取得し、レスポンスオブジェクトを使用してレスポンスメッセージを設定します

リクエスト関数
1.リクエストメッセージデータの
取得リクエストラインデータの取得
たとえば、GET / day14 / demo1?name = zhangsan HTTP / 1.1
メソッド:
(1)リクエストメソッドの取得:GET
String getMethod()

(2)仮想ディレクトリを取得します:/ day14(強調)
String getContextPath()

(3)サーブレットのパスを取得します:/ demo1
String getServletPath()

(4)getメソッドのリクエストパラメータを取得します:name = zhangsan
String getQueryString()

(5)リクエストURIを取得:/ day14 / demo1(キーポイント)
String getRequestURI取得:/ day14 / demo1
StringBuffer getRequestURL取得:http:// localhost / day14 / demo1

(6)プロトコルとバージョンを取得する:HTTP / 1.1
String getProtocol()

(7)クライアントのIPアドレスを取得します。
Sting getRemoteAddr()

2.リクエストヘッダーデータを取得する
方法:
(1)リクエストヘッダーの名前からリクエストヘッダーの値を取得する
String getHeader(String name)
(2)すべてのリクエストヘッダーの名前を取得する
Enumeration<String> getHeaderNames()

3.リクエストボディデータの取得
リクエストボディ:POSTリクエストメソッドのみにリクエストボディがあります。POSTリクエストのリクエストパラメータはリクエストボディにカプセル化されます。
手順:
(1)ストリームオブジェクトを
BufferedReader getReader()取得する文字入力ストリームを取得し、文字データのみを操作して文字を
ServletInputStream getInputStream()取得します入力ストリームを調整すると、すべてのタイプのデータを操作できます
(2)ストリームオブジェクトからデータを取得します

4.その他の機能
(1)リクエストパラメータの一般的な取得方法(getリクエストとpostリクエストの両方が使用可能)パラメータ名に従って
String getParameter(String name)パラメータ値を取得
String[] getParameterValues(String name)するパラメータ名に従ってパラメータ値配列を取得
Enumeration<String> getParameterNames()するすべてのリクエストのパラメータ名を
Map<String, String[]> getParameterMap()取得するすべてのパラメータのマップセットを取得する

中国語の文字化けの問題:
getメソッド:Tomcat8では、文字化けのgetメソッドの問題が解決されました。
ポストメソッド:文字化け。パラメータを取得する前に、リクエストのエンコーディングを設定するだけです。request.setCharacterEncoding("utf-8");

(2)リクエスト転送
手順:リクエスト
オブジェクトを介してリクエストフォワーダーオブジェクトを取得します。RequestDispatcherオブジェクトをRequestDispatcher getRequestDispatcher(String path)
使用して、次のものを転送します。forward(ServletRequest request, ServletResponse response)

機能:
ブラウザーのアドレスバーパスは変更されず
、現在のサーバーの内部リソースにのみ転送できます。
転送は要求です

(3)データ共有
ドメインオブジェクト:スコープ
リクエストドメイン内でデータを共有できるスコープを持つオブジェクト:リクエストのスコープを表します。通常、転送をリクエストする複数のリソース間でデータを共有するために使用されます

方法:
void setAttribute(String name, Object obj)データを保存するキーを使用して
Object getAttribute(String name)
void removeAttribute(String name)取得するキーを使用してキーと値のペアを削除する

(4)ServletContextを取得する
ServletContext getServletContext()

おすすめ

転載: blog.csdn.net/qq_42524288/article/details/104409702