Java Servletは、サーバーサイドでのリクエスト処理を担うJavaの重要な技術です。本記事では、Servletの基礎から実践的な活用方法までを詳しく解説します。
Servletを学ぶことで、JavaのWebアプリケーション開発の基盤をしっかり理解できるでしょう。
1.Java Servletとは?
Java Servlet(ジャバ・サーブレット)は、Javaを用いたWebアプリケーション開発のための技術であり、サーバーサイドで動作するJavaプログラムです。主に以下の役割を担います。
クライアントからのリクエスト(HTTPリクエスト)を受け取る
適切な処理を行い、レスポンス(HTMLやJSONなど)を返す
セッション管理や認証などのWebアプリケーションの基盤機能を提供
Servletは、Java EE(現 Jakarta EE)の仕様の一部として提供されており、サーバー上で動作するWebアプリケーションを作成するための標準的な仕組みです。
Servletの主な特徴
Servletの特徴として、以下の点が挙げられます。
サーバーサイドで動作するプログラム
クライアントのブラウザやアプリから送信されたリクエストを処理し、必要なデータを返す。
HTTPプロトコルとの親和性が高い
HTTPリクエスト(GET・POSTなど)を処理し、HTMLやJSONレスポンスを生成する。
プラットフォームに依存しない
Javaの「Write Once, Run Anywhere(WORA)」の特性を持ち、異なるOS環境でも動作する。
セッション管理が可能
クッキーやセッションオブジェクトを利用し、ユーザーごとの状態管理ができる。
他のフレームワークと組み合わせて利用される
現代では、Spring MVCなどのフレームワークの基盤技術として使われることが多い。
Servletの歴史と進化
Java Servletは、1997年に登場しWebアプリケーション開発の基本技術として普及しました。当初はCGI(Common Gateway Interface)に代わる技術として注目され、より効率的なリクエスト処理を実現しました。
現在ではJakarta EEの一部としてServletは進化を続けていますが、Spring Bootなどのフレームワークの台頭により、Servletを直接書く機会は減少しています。そのためサーブレットは古いといわれることもありますが、依然としてWebアプリの基盤技術として重要な役割を担っています。
2.Java ServletとJSPの違い
JSP(JavaServer Pages)は、HTML内にJavaコードを埋め込むことができる技術であり、Java Servletの拡張機能として登場しました。
Servletと異なり、HTMLページの中に直接Javaのコードを記述できるため、動的なWebページの開発が容易になります。
JSPの主な特徴
JSPの主な特徴は下記の通りです。
HTMLとJavaの統合
JSPでは、スクリプトタグを使用してJavaコードを埋め込むことができる。
サーバーサイドでの動的処理
ユーザーのリクエストに応じて、動的にページの内容を変更できる。
コンパイル不要
JSPファイルはServletに変換され、サーバー上で自動的にコンパイルされるため、手動でコンパイルする必要がない。
JavaBeansやJSTLの利用
再利用可能なコンポーネント(JavaBeans)や、カスタムタグ(JSTL)を使うことで、よりメンテナブルなコードを書くことが可能。
Servlet(サーブレット)とJSPの違い
Servletは、クライアントからのリクエストを処理し、データベースのやり取りなどのビジネスロジックを担当します。一方でJSPは、Servletから受け取ったデータを使って画面(HTML)を生成する役割を持ちます。
例えば、ユーザーがログインするWebアプリを作成するとき、以下のように役割分担を行います。
Servlet(LoginServlet)
ユーザー情報をデータベースと照合し、認証の処理を行う
認証結果(成功・失敗)をJSPに渡す
JSP(loginResult.jsp)
Servletから受け取った認証結果を元に、適切なメッセージを表示する
3.Java Servletの基本的な書き方
Java Servletは、Webアプリケーションのリクエスト処理を行うサーバーサイド技術の基盤です。Servletの基本的な書き方を理解することで、クライアントからのリクエストを受け取り、適切なレスポンスを返す仕組みを学ぶことができます。
Servlet(サーブレット)の作成手順
Java Servletを作成するためには、以下のステップを踏みます。
Servletクラスを作成
javax.servlet.http.HttpServletを継承したクラスを作成。
リクエスト処理メソッドを実装
doGet()やdoPost()などのメソッドをオーバーライド。
web.xmlまたはアノテーションでURLマッピング
クライアントがアクセスするURLとServletクラスを紐づける。
Tomcatなどのサーバーでデプロイ
Servletを動作させるためにサーバー環境を整える。
まずは、「Hello, World!」を表示する簡単なServletを作成してみましょう。以下のコードを使って、基本的なServletを作成できます。
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello") public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Hello, World!</h1>"); out.println("</body></html>"); } } |
doGet()とdoPost()の使い分け
Servletでは、HTTPのリクエストメソッドによって処理を分けることができます。主にdoGet()とdoPost()を使用します。
GETリクエストの例
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Hello, " + name + "!</h1>"); out.println("</body></html>"); } |
http://localhost:8080/app/hello?name=Johnにアクセスすると、「Hello, John!」と表示します。
POSTリクエストの例
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("<h1>Welcome, " + username + "!</h1>"); out.println("</body></html>"); } |
フォームからPOSTで送信されたデータを処理し、画面に表示します。
関連記事
Javaのオーバーライド攻略|オーバーロードとの違いや使い方・条件・戻り値などわかりやすく解説
4.Java Servletの実行環境:Tomcatのセットアップ
Apache Tomcatは、Java ServletやJSPを動作させるためのオープンソースのサーバー(Servletコンテナ)です。Tomcatは下記のような特徴を持ちます。
軽量で高速
Java EEのフルスタックアプリケーションサーバー(JBoss, GlassFishなど)よりも軽量。
Servlet & JSPの実行環境
Servlet APIやJSPをサポートしており、簡単にWebアプリを動作させることが可能。
開発環境に最適
本番環境でも利用されるが、特に開発・テスト環境での使用が一般的。
Tomcatのインストールと設定手順
公式サイト(Apache Tomcat)から最新のTomcatをダウンロードしましょう。ダウンロードが完了したら、インストールを開始します。
Windowsの場合
ZIPファイルを解凍(例:C:\tomcat\に配置)
binフォルダ内のstartup.batを実行
ブラウザでhttp://localhost:8080にアクセスしてTomcatが起動しているか確認
シャットダウンする場合は、binフォルダ内のshutdown.batを実行
macOSの場合
ターミナルでtar.gzを展開
実行権限を付与
chmod +x /opt/tomcat/bin/*.sh |
Tomcatの起動
/opt/tomcat/bin/startup.sh |
TomcatでServletを動作させる方法
Tomcatでは、webapps/配下にデプロイされたアプリが実行されます。
1.WEB-INF/web.xmlにURLマッピングを記述
<web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.example.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> |
2.classes/配下にコンパイル済みの.classファイルを配置
3.Tomcatを再起動
4.http://localhost:8080/myapp/helloにアクセスし、Servletの動作を確認
次に、Eclipseを使用してTomcatでServletを実行します。
1.EclipseにTomcatを設定
ウィンドウ > 設定 > サーバー > Runtime 環境 でTomcatを追加
2.Servletプロジェクトを作成
新規 > Dynamic Web Project を選択
3.Servletクラスを作成
@WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<h1>Hello, World!</h1>"); } } |
4.EclipseからTomcatを起動
サーバータブ > Tomcat を右クリック > 開始
http://localhost:8080/プロジェクト名/helloにアクセスし、動作確認
関連記事
Java開発環境構築|Windows・Mac・Linux別開発環境手順とおすすめIDEを解説
5.Java Servletとフレームワーク
Java Servletはサーバーサイドでのリクエスト処理の基本技術ですが、近年は直接Servletを記述することは減り、フレームワークを利用するのが一般的になっています。
Java Servlet | フレームワーク | |
---|---|---|
開発のしやすさ | 低い(コード量が多い) | 高い(簡潔な記述) |
メンテナンス性 | 低い(手動で設定) | 高い(設定が自動化) |
機能の充実度 | 基本機能のみ | DI, AOP, ORM など強力な機能 |
プロジェクト規模 | 小規模向け | 中〜大規模向け |
そのため、Java Servletは「フレームワークの内部構造を理解するための基礎」として重要であり、実際の開発ではSpring MVCやJakarta EEを活用する方が効率的です。
関連記事
【Javaアプリ開発|初心者必見】手順やおすすめの練習方法を教えます!効率化の手段やアプリ例も解説!
6.まとめ
Java Servletは、Javaを用いたWebアプリケーション開発の基本技術として広く活用されています。Servletの概念やJSPとの違いを理解し、適切なリクエスト処理方法を学ぶことで、Webアプリ開発のスキルを向上させることができます。
また、Tomcatのセットアップ方法やServletの実装手順を習得することで、実際の開発環境での運用がスムーズになります。
現在ではSpring MVCなどのフレームワークが主流ですが、Servletの基礎を理解することは、Webアプリ開発の土台を築く上で重要です。
本記事が皆様にとって少しでもお役に立てますと幸いです。
「フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。
開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。
単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。