Jakarta EE JSPとサーブレットの連携方法を徹底解説!初心者でもわかる仕組みとサンプルコード
生徒
「先生、Jakarta EEのJSPとサーブレットってどうやって連携させるんですか?」
先生
「良いポイントですね。JSPとサーブレットは、Jakarta EEのWebアプリ開発でよく組み合わせて使われます。サーブレットで処理したデータをJSPに渡して表示するのが一般的です。」
生徒
「つまり、サーブレットが裏でロジックを担当して、JSPが画面表示を担当するってことですか?」
先生
「その通りです!それでは、基本的な仕組みやサンプルコードを一緒に確認してみましょう。」
1. JSPとサーブレットの役割分担
Jakarta EEのWeb開発では、サーブレットがリクエストを受け取り、処理やデータ取得を担当し、その結果をJSPに渡して画面に表示するという流れが基本です。これにより、ビジネスロジックとプレゼンテーションを分離することができ、保守性や拡張性が高まります。
例えば、ユーザーが入力フォームから送信した情報をサーブレットが処理し、その結果をJSPにフォワードして画面に出力するといった使い方がよくあります。
2. サーブレットからJSPへのフォワード
サーブレットでは、RequestDispatcherを使ってJSPに処理を引き継ぎます。その際にリクエストスコープへデータを格納することで、JSP側で表示することが可能になります。
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = "Jakarta EE JSPとサーブレットの連携成功!";
request.setAttribute("msg", message);
RequestDispatcher dispatcher = request.getRequestDispatcher("/hello.jsp");
dispatcher.forward(request, response);
}
}
3. JSPでサーブレットのデータを受け取る
JSPファイルでは、サーブレットから渡されたリクエストスコープのデータを取得して表示します。request.getAttributeを利用するか、後で学習するJakarta Expression Language(EL式)を使う方法があります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello JSP</title>
</head>
<body>
<h2>サーブレットからのメッセージ:</h2>
<p><%= request.getAttribute("msg") %></p>
</body>
</html>
4. JSPとサーブレット連携の流れ
ここまでの内容を整理すると、Jakarta EEにおけるJSPとサーブレットの連携は次のようになります。
- ブラウザがサーブレットにアクセス
- サーブレットで処理を実行し、結果をリクエストスコープに保存
RequestDispatcherでJSPにフォワード- JSPがデータを取得して画面に表示
この仕組みにより、JavaのロジックとHTMLの表示が分離され、Webアプリケーションの設計が分かりやすくなります。
5. 初心者がつまずきやすいポイント
初心者の方がJakarta EE JSPとサーブレットの連携でつまずくのは、主に以下の点です。
- サーブレットで
request.setAttributeを忘れてしまい、JSPでデータが表示されない - フォワード先のJSPのパス指定を間違える
- 出力する際に
request.getAttributeをキャストし忘れる
これらを確認すれば、多くの初期トラブルは解決できます。特にWebアプリ開発を学び始めた初心者の段階では、エラーメッセージを読み取りながら、一歩ずつ確認することが大切です。
6. 実行例
上記のサーブレットとJSPを連携させると、ブラウザには次のような結果が表示されます。
サーブレットからのメッセージ:
Jakarta EE JSPとサーブレットの連携成功!
7. 実務での応用
実務では、サーブレットがデータベースアクセスやビジネスロジックを処理し、JSPがその結果を表形式やグラフとして表示するケースが多くあります。これにより、画面担当者とロジック担当者が分業でき、効率的なチーム開発が可能になります。
また、Jakarta EEのJSPは、Jakarta Servletと連携することで強力なWebアプリケーション基盤を提供します。初心者のうちからこの仕組みを理解しておくと、将来の実務開発に役立ちます。