【Java高度学習】サーブレットインターフェースの仕様と7種類のリクエストメソッドの処理

サーブレットの概要

  1. サーブレットとは
    • サーブレットは、Sun Companyが提供する一連のインターフェース仕様であり、JavawebWebサイトの開発技術に特別に適用されます。
    • サーブレットは、この一連のインターフェース仕様を実装するWebアプリケーションサーバー(Tomcat)です。
    • サーブレット=サーバー+アプレット(サーバーアプリケーション)
  2. サーブレットの主な機能
    • クライアント(ブラウザー)から送信されたHTTP要求を処理します
    • それに応じてクライアント(ブラウザ)に結果を要求します
  3. サーブレット的API
    • Tomcat / lib库—> servlet.api.jar

サーブレット

  1. srcの下にパッケージを作成します:cn.tedu.servlet

  2. クラスを作成し、サーブレットインターフェイスを実装して、メソッドをオーバーライドします

    • init(ServletConfig servletConfig):サーブレット初期化方式
    • service():サーブレットはリクエストと対応するメソッドを処理します
    • destroy():サーブレットが破壊されたときのメソッド
  3. WEB-INFの下のweb.xmlでサーブレットマッピングを構成します

    servletラベル

    • nameラベル:カスタム;
    • classラベル:マップされるサーブレットクラスのパス

    servlet-mappingラベル

    • nameラベル:サーブレットの名前ラベルと一致している必要があります
    • url-patternラベル:訪問する仮想パス
    <!--servlet的映射关系:浏览器请求  与 servlet代码的 映射关系-->
    <servlet>
        <servlet-name>hello</servlet-name><!--程序员自定义的名字-->
        <servlet-class>cn.tedu.servlet.Servlet01_servlet接口</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name><!--必须与servlet标签的name对应-->
        <url-pattern>/hello</url-pattern><!--访问的虚拟路径-->
    </servlet-mapping>
    

サーブレットのライフサイクル

  1. Tomcatサーバーの起動時:
    • 構成ファイルをロードします:web.xml(ファイルは正常に開始するために正しいです)
  2. 解析のためにHTTPリクエストがweb.xmlに送信されると、クラスファイルが見つかると、Tomcatは自動的にクラスオブジェクトを作成します。
  3. アクティビティ:リクエスト処理中は常に存在します
  4. サーブレットの破壊:Tomcatがシャットダウンされる前に、destroyメソッドを実行すると、最終的なオブジェクトがjvmによってリサイクルされます。

GenericServlet

抽象クラス

サーブレットとの関係

サーブレットインターフェイスを実装し、サーブレットメソッドを書き直し、service()メソッドのみに注意を払います

  1. サーブレットはインターフェースであり、内部にはメソッド署名のみがあり、メソッド本体はありません
  2. サーブレットを使用する場合は、サーブレットインターフェイスを実装する必要があります。次の方法があります。
    1. void destroy() ------一般的に使用されます
    2. void init(ServlerConfig config);----一般的に使用される
    3. void service(ServletRequest req, ServletResponse res)----一般的に使用される

リクエストメソッドの処理

リクエストする7つの方法:

  • 一般的に使用される:get、post、
  • 一般的には使用されません:put、delete、tarce、head、options

サービスは、上記の7種類のリクエストすべてを受け取ることができます

この方法で書くのは面倒で、単純化する必要があります

  • したがって、このクラスは使用されず、GenericServletクラスを継承するHttpServletが使用されます。
  • リクエストを受信した後、サービスメソッドの処理ロジックを個別に実行する必要があります
    • リクエストのgetメソッドはgetメソッドを実行します
    • postメソッドを実行するためにpostメソッドが要求されます

HttpServlet(✔使用)

前書き:

  1. 継承関係:HttpServletはGenericServletを継承し、GenericServletはサーブレットを実装します
  2. HttpServletは抽象クラスです
  3. HTTPサーブレットはHTTPリクエストの処理専用です
  4. 次のようなさまざまな要求を処理するカプセル化の方法:doGet()doPost()

サービス()

getリクエストとpostリクエストの両方を処理できます

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    

}

doGet()

getリクエストを処理する

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
    //需要的指定业务逻辑,可以被重复的调用
}

doPost()

ポストリクエストの処理

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    

}

HTTPプロトコル

リクエスト

  • リクエストライン:

    • リクエストメソッド、リクエストされたアドレス、HTTPプロトコルのバージョン
  • 複数のリクエストヘッダー

    • メッセージヘッダー。通常、クライアントが使用する追加情報を説明するために使用されます。
  • 空白行(必須)

  • 要求されたデータ

応答

  • ステータスライン(対応するライン):

    • HTTPバージョン、ステータスコード、ステータスメッセージ
  • 複数の応答ヘッダー

    • メッセージヘッダー、クライアントが使用する追加情報
  • 空白行(必須)

  • 応答データ

    • 本文、サーバーがブラウザに返す情報

HTTP応答

  • 応答形式の構造:

    • 応答行(ステータス行):HTTPバージョン、ステータスコード、ステータスメッセージ
    • 応答ヘッダー:メッセージヘッダー、クライアントが使用する追加情報
    • 空白行:応答ヘッダーと応答エンティティの間に必要
    • 応答エンティティ:本体、サーバーからブラウザーに返される情報
  • 一般的なHTTP応答ステータスコードの意味:

    HTTPステータスコードは10進数の3桁で構成され、最初の10進数はステータスコードのタイプを定義し、後の2桁には分類機能がありません。HTTPステータスコードには次の5種類があります。

    分類 分類の説明
    1 ** 情報、サーバーはリクエストを受信し、リクエスターが操作を実行し続けることを要求します
    2 ** 成功、操作は正常に受信され、処理されました
    3 ** リダイレクトします。リクエストを完了するには、さらにアクションが必要です
    4 ** クライアントエラー、リクエストに構文エラーが含まれているか、リクエストを完了できません
    5 ** サーバーエラー、リクエストの処理中にサーバーでエラーが発生しました

    一般的なステータスコード:

    ステータスコード ステータスメッセージ 説明
    200 OK クライアントリクエストは成功しました
    400 要求の形式が正しくありません クライアント要求に構文エラーがあり、サーバーが理解できません
    401 許可されていない リクエストは承認されていません。このステータスコードはWWW-Authenticateヘッダーフィールドで使用する必要があります
    403 禁止 サーバーはリクエストを受信しますが、サービスの提供を拒否します
    404 見つかりません 要求されたリソースが存在しません。例:間違ったURLが入力されています
    500 内部サーバーエラー サーバーで予期しないエラーが発生しました
    503 切断不可 サーバーは現在、クライアントの要求を処理できず、しばらくすると通常の状態に戻る可能性があります

リクエスト

ServletRequest:インターフェース

  • クライアント要求情報をサーブレットに提供するオブジェクトを定義します

  • サーブレットコンテナは、ServletRequestオブジェクトを作成し、それをパラメータとしてサービスメソッドに渡します。

  • ServletRequestが受信するリクエストは、HTTPタイプのリクエストだけでなく、他のタイプのリクエストでもあります。

  • デフォルトは基本的にHTTPリクエストです

HttpServletRequest

  • HTTPプロトコルリクエストを直接受信します

継承関係

ServletRequest接口
	|--- HttpServletRequest接口(对ServletRequest的扩展,提供更多的方法去操作)
		|--- HttpServletRequestWrapper(实现类:tomcat服务器会自动创建一个HttpServletRequest对象)
			 HttpServletRequest req = new HttpServletRequestWrapper();
		

おすすめ

転載: blog.csdn.net/weixin_54707168/article/details/114057990