要求オブジェクトと応答オブジェクトの原則
(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()