記事のディレクトリ
サーブレットの概要
- サーブレットとは
- サーブレットは、Sun Companyが提供する一連のインターフェース仕様であり、JavawebWebサイトの開発技術に特別に適用されます。
- サーブレットは、この一連のインターフェース仕様を実装するWebアプリケーションサーバー(Tomcat)です。
- サーブレット=サーバー+アプレット(サーバーアプリケーション)
- サーブレットの主な機能
- クライアント(ブラウザー)から送信されたHTTP要求を処理します
- それに応じてクライアント(ブラウザ)に結果を要求します
- サーブレット的API
- Tomcat / lib库—> servlet.api.jar
サーブレット
-
srcの下にパッケージを作成します:cn.tedu.servlet
-
クラスを作成し、サーブレットインターフェイスを実装して、メソッドをオーバーライドします
init(ServletConfig servletConfig)
:サーブレット初期化方式service()
:サーブレットはリクエストと対応するメソッドを処理しますdestroy()
:サーブレットが破壊されたときのメソッド
-
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>
サーブレットのライフサイクル
- Tomcatサーバーの起動時:
- 構成ファイルをロードします:web.xml(ファイルは正常に開始するために正しいです)
- 解析のためにHTTPリクエストがweb.xmlに送信されると、クラスファイルが見つかると、Tomcatは自動的にクラスオブジェクトを作成します。
- アクティビティ:リクエスト処理中は常に存在します
- サーブレットの破壊:Tomcatがシャットダウンされる前に、destroyメソッドを実行すると、最終的なオブジェクトがjvmによってリサイクルされます。
GenericServlet
抽象クラス
サーブレットとの関係
サーブレットインターフェイスを実装し、サーブレットメソッドを書き直し、service()メソッドのみに注意を払います
- サーブレットはインターフェースであり、内部にはメソッド署名のみがあり、メソッド本体はありません
- サーブレットを使用する場合は、サーブレットインターフェイスを実装する必要があります。次の方法があります。
void destroy()
------一般的に使用されますvoid init(ServlerConfig config);
----一般的に使用されるvoid service(ServletRequest req, ServletResponse res)
----一般的に使用される
リクエストメソッドの処理
リクエストする7つの方法:
- 一般的に使用される:get、post、
- 一般的には使用されません:put、delete、tarce、head、options
サービスは、上記の7種類のリクエストすべてを受け取ることができます
この方法で書くのは面倒で、単純化する必要があります
- したがって、このクラスは使用されず、GenericServletクラスを継承するHttpServletが使用されます。
- リクエストを受信した後、サービスメソッドの処理ロジックを個別に実行する必要があります
- リクエストのgetメソッドはgetメソッドを実行します
- postメソッドを実行するためにpostメソッドが要求されます
HttpServlet(✔使用)
前書き:
- 継承関係:HttpServletはGenericServletを継承し、GenericServletはサーブレットを実装します
- HttpServletは抽象クラスです
- HTTPサーブレットはHTTPリクエストの処理専用です
- 次のようなさまざまな要求を処理するカプセル化の方法:
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();