22.ServletとJSPによるWebプログラミング

独習JAVA

Javaを使用したWebプログラミングにおいて、ServletとJSP(JavaServer Pages)は非常に重要な技術です。Servletは、サーバーサイドのJavaプログラムであり、HTTPリクエストを処理し、レスポンスを生成する役割を担います。一方、JSPはHTMLの中にJavaコードを埋め込むことができるテンプレートエンジンで、動的なWebページの生成に使用されます。本記事では、ServletとJSPの基本を理解し、実際に簡単なWebアプリケーションを作成する流れを詳しく解説します。

Servletとは?

ServletはJava EE(Enterprise Edition)で提供されるサーバーサイドプログラミングの技術で、主にHTTPリクエストの処理を行います。Servletは`HttpServlet`クラスを継承し、`doGet`や`doPost`メソッドをオーバーライドすることで、GETリクエストやPOSTリクエストに応じた処理を行います。

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        response.getWriter().println("

Hello, World!

"); } }

この簡単な例では、`HelloWorldServlet`というServletを定義しています。`doGet`メソッド内でHTTPリクエストを処理し、`response.getWriter().println`を使用してレスポンスとしてHTMLコンテンツ(「Hello, World!」)を返しています。Servletは、Webサーバー上で実行され、リクエストに応じて動的にコンテンツを生成することができます。

JSPとは?

JSP(JavaServer Pages)は、HTMLファイルの中にJavaコードを埋め込むことができる技術です。主にHTMLテンプレートとして使用され、動的なWebページを生成します。Servletと組み合わせて使用することで、プレゼンテーションとビジネスロジックを分離することができ、Webアプリケーションの構造が整理されます。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Hello JSP


    

Hello, JSP!

現在の時刻: <%= new java.util.Date() %>

このJSPファイルでは、Javaコードを`<%= %>`タグ内に埋め込んで、現在の時刻を表示しています。JSPはHTMLとしてブラウザに表示されますが、サーバー側で動的にコンテンツを生成することができます。例えば、現在時刻やユーザー入力に基づいて異なるコンテンツを表示することが可能です。

ServletとJSPの連携

通常、Servletはビジネスロジックを処理し、その結果をJSPに渡して表示させる形で使用されます。これにより、ビジネスロジックとプレゼンテーションの分離が実現され、コードの保守性が向上します。以下の例では、Servletで処理したデータをJSPに渡して表示しています。

Servletコード: データをJSPに転送

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

public class WelcomeServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String name = request.getParameter("name");
        request.setAttribute("userName", name);

        RequestDispatcher dispatcher = request.getRequestDispatcher("welcome.jsp");
        dispatcher.forward(request, response);
    }
}

このServletでは、フォームから送信されたユーザーの名前を取得し、それをJSPに転送しています。`RequestDispatcher`を使用して、`welcome.jsp`にリクエストを転送し、`request.setAttribute`でデータを設定しています。

JSPコード: データを表示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Welcome Page


    

Welcome, <%= request.getAttribute("userName") %>!

JSPファイルでは、Servletから転送された`userName`属性を`<%= request.getAttribute("userName") %>`で取得し、HTMLとして表示しています。これにより、ユーザーが入力した名前が動的に表示されるWebページが作成されます。

ServletとJSPを使ったフォーム処理の例

次に、フォームからのユーザー入力をServletで処理し、その結果をJSPで表示する例を見ていきます。フォームから名前を入力し、それをServletで処理してJSPに渡すという基本的なフローを実装します。

HTMLフォーム

名前:

このHTMLフォームでは、ユーザーに名前を入力してもらい、POSTリクエストを`/welcome`というURLに送信します。次に、Servletがこのリクエストを処理します。

Servletコード: フォームデータを処理

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

public class WelcomeServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String name = request.getParameter("name");
        request.setAttribute("userName", name);

        RequestDispatcher dispatcher = request.getRequestDispatcher("welcome.jsp");
        dispatcher.forward(request, response);
    }
}

JSPコード: 結果を表示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Welcome Page


    

こんにちは、<%= request.getAttribute("userName") %>さん!

この例では、ユーザーがフォームに入力した名前をServletが処理し、JSPに渡して表示しています。このように、Servletでロジックを処理し、JSPで結果を表示するという流れは、Java Webアプリケーションにおける典型的なパターンです。

まとめ

ServletとJSPを使用することで、Javaを利用した強力なWebアプリケーションを構築できます。Servletはリクエスト処理とビジネスロジックの実装に適しており、JSPはその結果をユーザーに提示するためのテンプレートとして利用されます。この2つの技術を連携させることで、効率的でメンテナンス性の高いWebアプリケーションが実現します。

購読
通知
0 Comments
Inline Feedbacks
View all comments