HTTPリクエストとレスポンスの構造
リクエストデータの構成
HTTPリクエストは以下の3つの主要部分で構成されます:
- リクエスト行: 最初の行で、メソッド(GET/POST等)、リソースパス、プロトコルバージョンを含む
- リクエストヘッダ: キー:値形式のメタデータ
Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml Accept-Language: ja-JP Accept-Encoding: gzip, deflate - リクエストボディ: POSTリクエスト専用で、送信データを格納
レスポンスデータの構成
- レスポンス行: プロトコルバージョン、ステータスコード、説明文
- レスポンスヘッダ: メタデータ
Content-Type: text/html; charset=UTF-8 Content-Length: 1024 Cache-Control: max-age=3600 - レスポンスボディ: HTMLコンテンツ等の実データ
HTTPステータスコード
| コード | 説明 |
|---|---|
| 200 | 成功 |
| 302 | リダイレクト |
| 404 | リソース未発見 |
| 500 | サーバー内部エラー |
Servletの基本実装
Servletの作成手順
- Maven依存関係の追加:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> - Servletクラスの実装:
@WebServlet("/example") public class BasicServlet implements Servlet { public void service(ServletRequest req, ServletResponse res) { System.out.println("Servlet動作確認"); } // その他のメソッド実装... }
Servletのライフサイクル
- 初期化: init()メソッド
- リクエスト処理: service()メソッド
- 終了処理: destroy()メソッド
HTTP専用Servletの実装
@WebServlet("/custom")
public class HttpCustomServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) {
// GET処理ロジック
}
protected void doPost(HttpServletRequest req, HttpServletResponse res) {
// POST処理ロジック
}
}
URLパターン設定
- 完全一致: @WebServlet("/path/exact")
- ディレクトリパターン: @WebServlet("/category/*")
- 拡張子パターン: @WebServlet("*.action")
XMLによるServlet設定
<web-app>
<servlet>
<servlet-name>LegacyServlet</servlet-name>
<servlet-class>com.example.LegacyImplementation</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LegacyServlet</servlet-name>
<url-pattern>/legacy</url-pattern>
</servlet-mapping>
</web-app>