【Java Web入門 #1】Webアプリケーションとは|動的コンテンツとJavaサーブレット
2024.12.06
Java入門の最初の記事(【Java入門】第1回 Javaを学ぼう!)では、「大規模なWebシステムの開発現場では、今でもJavaは主流の言語です」と述べましたが、JavaはWebシステム(Webアプリケーション)の開発言語として利用されることが非常に多いプログラム言語です。むしろ、Javaを利用する開発現場では、Webアプリケーションの開発は避けて通れないとも言えるでしょう。
Java Web入門ではWebアプリケーション開発の第一歩として、Webアプリケーションのために準備されたライブラリであるJavaサーブレットや、主だったフレームワークの利用方法など、基本的な開発方法について説明していきたいと思います。
目次
Webアプリケーションとは
そもそもWebアプリケーションとはどういったものでしょうか。とても簡単に言ってしまえば、Webアプリケーションとはインターネット上で動くプログラムのことです。
例えば、以下のようなものも全て、Webアプリケーションの一例です。
- Google検索: 検索欄に入力したキーワードに応じた検索結果が表示されます。
- X(Twitter): 自分の考えを投稿したり、他の人の投稿を閲覧することができます。
- オンラインショップ: 様々な条件で商品を検索したり、商品を購入することができます。
Webアプリケーションの特徴
Webアプリケーションの特徴としては、以下のような内容が挙げられます。
- インターネットを通じて使うことができる
特別にアプリをインストールしなくても、インターネットに繋がっていれば、パソコンやスマートフォンから利用することができます。 - 利用者の操作に応じた表示
利用者の操作に合わせて、表示される内容が変わるのが特徴です。例えば、検索結果やニュースは、利用者が検索したキーワードに応じた内容や、最新の情報が表示されたりします。 - たくさんの人/モノが同時に使える
基本的に、多くの人が同時に同じWebアプリケーションを利用することができます。また、パソコンやスマートフォン、IoTに対応した機器など、様々なデバイスから利用することもできます。
Webアプリケーションが表示するもの
Webブラウザやアプリ上に表示されるコンテンツ
そもそも、ChromeやSafari、EdgeといったWebブラウザでインターネット上のサイトを表示したり、Xやインスタグラムなどのアプリの画面に様々なコンテンツを表示できるのは、どのような仕組みなのでしょうか?
例えばWebブラウザでは、サーバー上に設置した静的なHTMLファイルを読み込んで画面上に表示することができますが、これはHTMLという形式で記述された内容を、表示するコンピューターやスマートフォン上でWebブラウザが解析し、指定された内容で表示を行っています。
例えば以下のHTMLでは『赤文字で「こんにちは!」と表示し、サーバーから画像(image.jpg)を取得して、その下に表示する』という内容が記述されており、これを解析した結果をWebブラウザーが画面上に表示します。
<html>
<body>
<p style="color: red;">こんにちは!</p>
<img src="../images/image.jpg"/>
</body>
</html>
また、WebブラウザはHTML以外の形式の情報を受け取った場合でも、ある程度指定された形式で表示することができます。例えば、画像だけを直接表示したり、PDFファイルなどの表示がそれにあたります。
動的なコンテンツとは
このように、Webブラウザやアプリは「コンテンツとして画面上に表示するための情報」をインターネットを通じて受け取り、指定された形になるようパソコンやスマートフォンの端末上に表示しています。
このとき、サーバーから受け取る情報は、サーバーに配備したHTMLファイルなど固定の内容(静的なコンテンツ)の場合と、Googleの検索結果のように送信した情報に応じて変動して表示される内容(動的なコンテンツ)の場合があります。
Webアプリケーションでは、ユーザーの要求に応じて「動的なコンテンツ」を返すことで、インターネットを介して様々な情報を表示したり、サーバーで様々な処理を行って投稿された情報を記録したり、商品を購入したりすることができます。
Java サーブレットとは
JavaでWebアプリケーションを開発するための基本的な仕組みとして、Javaサーブレット(Servlet)というものがあります。Javaサーブレットでは、インターネットを通じた要求(リクエスト)を受け取り、Javaで記述したプログラムを実行して、動的に要求元へ結果を返却(レスポンス)することができます。
Javaサーブレットを利用するためのライブラリは、jakarta.servletパッケージ(Java EE 8以前ではjavax.servletパッケージ)にまとめられています。
以下のプログラムでは、商品の金額と消費税率をリクエストの情報(パラメーター)として受け取り、税込金額(小数点以下切り捨て)を計算した結果を画面に表示するHTMLの文字列を作成しています。
※パラメーターに対する各種チェック処理などは省略しています。
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = {"/TaxCalculator"})
public class TaxCalculatorServlet extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// リクエストパラメータを取得
String priceStr = request.getParameter("price");
String taxRateStr = request.getParameter("taxRate");
// 文字列を数値に変換
int price = Integer.parseInt(priceStr);
double taxRate = Double.parseDouble(taxRateStr) / 100;
// 税込金額を計算(小数点以下切り捨て)
int taxIncludedPrice = (int) Math.floor(price * (1 + taxRate));
// 結果をHTMLで表示
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>税込価格計算</title></head>");
out.println("<body>");
out.println("<p>税抜価格:" + price + "円</p>");
out.println("<p>消費税率:" + taxRate + "%</p>");
out.println("<h2>税込価格は" + taxIncludedPrice + "円です。</h2>");
out.println("</body>");
out.println("</html>");
}
}
このプログラムでは、Webブラウザは税込金額を計算させるための要求として「税抜価格」「消費税率」の情報をJavaサーブレットに引き渡し、Javaサーブレットから返された計算結果の表示内容(HTML)を受け取って表示します。ここでは、税抜価格に「1000」(円)、消費税率に「8」(%)を指定して実行してみます。
サーブレットで計算処理が実行され、結果が表示されました。
次回以降の記事では、実際にJavaサーブレットのプログラムを動かすための仕組み(サーブレットコンテナ)や、Eclipse上でWebアプリケーションを開発する方法、Webアプリケーションを作成するためのフレームワーク(簡単に作成するための部品群や枠組み)の利用について、順に説明していきたいと思います。