Jakarta サーブレットとJSPの役割分担を徹底解説!初心者でもわかるWebアプリ開発の基本
生徒
「先生、Jakarta サーブレットとJSPって両方ともWebアプリで使われるみたいですが、どう違うんですか?」
先生
「いい質問だね。Jakarta サーブレットはリクエスト処理やビジネスロジックを担当して、JSPは画面表示を担当するんだ。つまり役割が違うんだよ。」
生徒
「なるほど!サーブレットは裏方で処理をして、JSPはユーザーに見せる部分を作るってことですね。」
先生
「その通り。ではJakarta サーブレットとJSPの役割分担について詳しく見ていこう。」
1. Jakarta サーブレットの役割
Jakarta サーブレットは、Webサーバー上で動作し、クライアントから送られてきたリクエストを処理する役割を持ちます。例えば、フォームから送信されたデータを受け取り、データベースに保存したり、計算処理を行ったりするのがサーブレットの仕事です。サーブレットはjakarta.servlet.http.HttpServletを継承して作成し、doGetやdoPostメソッドを実装してリクエストに応じた処理を行います。
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("message", "こんにちは、Jakarta サーブレット!");
request.getRequestDispatcher("/hello.jsp").forward(request, response);
}
}
2. JSPの役割
JSP(Jakarta Server Pages)は、HTMLにJavaコードを埋め込むことで動的なページを生成できる仕組みです。サーブレットが処理したデータをJSPに渡し、JSP側で画面表示を担当します。これにより、ロジックとビューを分離し、コードの可読性やメンテナンス性を高めることができます。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
3. Jakarta サーブレットとJSPの役割分担
Jakarta サーブレットとJSPの大きな違いは「どこで処理をするか」という点です。サーブレットは裏側でデータ処理や制御を行い、JSPは見た目の部分を担当します。つまりMVCモデルにおける「C(コントローラ)」がサーブレット、「V(ビュー)」がJSPという関係になります。これにより、責務が分離され、チーム開発でも役割を分担しやすくなります。
4. 実際の処理の流れ
実際のWebアプリケーションでは以下のような流れでJakarta サーブレットとJSPが協力します。
- ユーザーがブラウザからリクエストを送信
- Jakarta サーブレットがリクエストを受け取り、必要な処理を実行
- 処理結果をリクエスト属性に保存し、JSPに転送
- JSPが結果を画面に描画し、レスポンスをブラウザに返す
5. Jakarta サーブレットとJSPの連携例
サーブレットからJSPにデータを渡し、JSPで表示する典型的な例を見てみましょう。
@WebServlet("/user")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("username", "太郎");
request.getRequestDispatcher("/user.jsp").forward(request, response);
}
}
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>User Page</title>
</head>
<body>
<p>ようこそ、${username}さん!</p>
</body>
</html>
6. Jakarta サーブレットとJSPを組み合わせるメリット
Jakarta サーブレットとJSPを組み合わせることで、開発の効率と保守性が大幅に向上します。サーブレットは複雑なリクエスト処理を担当し、JSPは見やすく美しい画面を作ることに集中できるため、コードの分離が実現できます。また、HTMLデザインに強い人はJSPを担当し、プログラミングに強い人はサーブレットを担当することでチーム開発もスムーズになります。