カテゴリ: Servlet 更新日: 2026/03/24

HTMLフォームからServletへデータ送信する方法を初心者向けに解説!Java Webアプリ開発の基本

HTMLフォームから入力してDBに保存する仕組み
HTMLフォームから入力してDBに保存する仕組み

新人と先輩の会話形式で理解しよう

新人

「Webサイトで名前やメールアドレスを入力して送信するフォームってありますよね。あの入力したデータって、どうやってサーバーに送られているんですか?」

先輩

「いいところに気づきましたね。Webアプリケーションでは、HTMLフォームという仕組みを使って、ブラウザからサーバーへデータを送信しています。」

新人

「HTMLフォームというのは、入力欄がある画面のことですか?」

先輩

「その通りです。ユーザーが入力したデータは、送信ボタンを押すとサーバーに送られます。そしてJavaのServletというプログラムがそのデータを受け取り、データベースに保存することもできます。」

新人

「なるほど。つまり、フォームで入力した情報はServletが受け取るんですね。」

先輩

「そうです。HTMLフォーム、Servlet、データベースの組み合わせは、Java Webアプリ開発の基本中の基本です。順番に仕組みを見ていきましょう。」

1. HTMLフォームからデータを送信するとは?(Webアプリの基本)

1. HTMLフォームからデータを送信するとは?(Webアプリの基本)
1. HTMLフォームからデータを送信するとは?(Webアプリの基本)

Webアプリケーション開発では、ユーザーが入力したデータをサーバーへ送信する仕組みが必要になります。 例えば次のような場面があります。

  • 会員登録フォーム
  • ログインフォーム
  • お問い合わせフォーム
  • 商品注文フォーム

これらの画面では、ユーザーがブラウザに情報を入力し、その内容をサーバーに送信しています。 このときに使われるのがHTMLフォームです。

HTMLフォームとは、ユーザーが入力したデータをサーバーに送信するためのHTMLの仕組みです。 入力欄、送信ボタン、チェックボックスなどを組み合わせて作ります。

例えば、紙の申込書をイメージしてください。紙の申込書では名前や住所を書いて提出します。 Webアプリでは、その紙の申込書の役割をHTMLフォームが担当しています。

ユーザーが入力したデータは、送信ボタンを押すことでサーバーへ送られます。 そしてJava Web開発では、そのデータをServletというJavaプログラムが受け取ります。

この仕組みは、Java Servlet、JSP、JDBC、データベース連携などの基礎になる重要な知識です。 Webアプリ開発を学ぶ初心者にとって、HTMLフォームとデータ送信の理解は最初に覚えるべき重要なポイントです。

2. HTMLフォームの基本構造(input・form・POST送信の仕組み)

2. HTMLフォームの基本構造(input・form・POST送信の仕組み)
2. HTMLフォームの基本構造(input・form・POST送信の仕組み)

HTMLフォームは、主に次のタグを使って作成します。

  • formタグ
  • inputタグ
  • buttonタグ

formタグは、フォーム全体を作るタグです。 その中に入力欄や送信ボタンを配置します。

inputタグは、ユーザーが文字を入力するための入力欄を作るタグです。 名前、メールアドレス、パスワードなどの入力欄を作ることができます。

そして、フォームで重要なのがPOST送信という仕組みです。 POST送信とは、入力されたデータをHTTPリクエストとしてサーバーに送信する方法です。

Webアプリケーションでは、データ登録やログインなどの処理ではPOST送信がよく使われます。

実際にHTMLフォームの基本的なサンプルコードを見てみましょう。


<!DOCTYPE html>
<html>
<head>
    <title>ユーザー登録フォーム</title>
</head>
<body>

<h2>ユーザー登録</h2>

<form action="UserRegisterServlet" method="post">

    名前<br>
    <input type="text" name="username"><br><br>

    メールアドレス<br>
    <input type="email" name="email"><br><br>

    <input type="submit" value="送信">

</form>

</body>
</html>

このHTMLフォームでは、ユーザーが名前とメールアドレスを入力して送信できます。

action属性には、データを送信する先のServletのURLを指定します。 method属性には、データ送信の方法を指定します。

methodにpostを指定すると、フォームのデータがHTTP POSTリクエストとしてサーバーへ送信されます。

このように、HTMLフォームはWebアプリケーションの入力インターフェースとして重要な役割を持っています。

3. HTMLフォーム → Servlet → データベース保存の全体の流れ

3. HTMLフォーム → Servlet → データベース保存の全体の流れ
3. HTMLフォーム → Servlet → データベース保存の全体の流れ

Java Webアプリケーションでは、HTMLフォームだけでは処理は完結しません。 フォームから送信されたデータは、Servletで処理され、その後データベースに保存されることが多いです。

全体の処理の流れは次のようになります。

HTMLフォーム入力

ブラウザがPOST送信

Servletがデータを受け取る

データベースへ保存

つまり、HTMLフォームはユーザーの入力画面、Servletはデータを処理するプログラム、データベースはデータを保存する場所という役割になります。

次に、Servlet側でフォームデータを受け取るJavaコードを見てみましょう。


import java.io.IOException;
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("/UserRegisterServlet")
public class UserRegisterServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String name = request.getParameter("username");
        String email = request.getParameter("email");

        System.out.println("名前: " + name);
        System.out.println("メール: " + email);
    }
}

このJavaプログラムでは、request.getParameterというメソッドを使っています。

getParameterメソッドとは、HTMLフォームから送信されたデータを取得するためのメソッドです。 inputタグのname属性と同じ名前を指定することで、入力されたデータを取り出すことができます。

例えば、フォームで入力された名前とメールアドレスを取得して、画面に表示することもできます。


String name = request.getParameter("username");
String email = request.getParameter("email");

response.setContentType("text/html;charset=UTF-8");

response.getWriter().println("入力された名前: " + name);
response.getWriter().println("<br>");
response.getWriter().println("入力されたメール: " + email);

このように、HTMLフォームとServletを組み合わせることで、ユーザーが入力したデータをJavaプログラムで処理できます。

さらに実際の業務システムでは、ここからJDBCを使ってデータベースへ保存する処理を追加します。

例えば次のようなシステムで使われます。

  • 会員登録システム
  • お問い合わせ管理システム
  • 商品注文システム
  • ユーザー管理システム

HTMLフォーム、Servlet、データベースの連携は、Java Webアプリケーション開発の基礎となる非常に重要な技術です。 この流れを理解することで、ログイン機能や登録機能など、実践的なWebシステムを作れるようになります。

4. ServletでHTMLフォームの入力値を受け取る方法(request.getParameterの使い方)

4. ServletでHTMLフォームの入力値を受け取る方法(request.getParameterの使い方)
4. ServletでHTMLフォームの入力値を受け取る方法(request.getParameterの使い方)

HTMLフォームから送信されたデータは、JavaのServletで受け取ることができます。 Webアプリケーション開発では、ユーザーが入力したデータをサーバー側のプログラムで処理することが重要になります。 そのときに使用するのがrequest.getParameterというメソッドです。

request.getParameterとは、HTMLフォームから送信されたパラメータを取得するためのメソッドです。 HTMLのinputタグで指定したname属性の値を指定することで、入力された内容を取得できます。

例えば、HTMLフォームで次のような入力欄があったとします。


<form action="UserRegisterServlet" method="post">

    名前
    <input type="text" name="username">

    メールアドレス
    <input type="email" name="email">

    <input type="submit" value="送信">

</form>

このフォームでは、usernameとemailという名前のデータがサーバーに送信されます。 Servletでは、このname属性と同じ名前を指定して値を取得します。


protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String username = request.getParameter("username");
    String email = request.getParameter("email");

    System.out.println("ユーザー名: " + username);
    System.out.println("メールアドレス: " + email);
}

request.getParameterの引数には、HTMLフォームのname属性を指定します。 すると、ユーザーが入力した文字列を取得できます。

HTMLフォームのname属性

request.getParameterで取得

Webアプリケーション開発では、この仕組みを使ってログイン処理、会員登録処理、検索処理などを実装します。 例えばログイン画面では、ユーザー名とパスワードを取得して認証処理を行います。

なお、getParameterで取得できるデータは文字列です。 数値として扱いたい場合は、数値変換を行う必要があります。


String ageStr = request.getParameter("age");
int age = Integer.parseInt(ageStr);

System.out.println("年齢: " + age);

このように、ServletではHTMLフォームから送信されたデータを簡単に取得できます。 request.getParameterは、Java Servlet開発で非常によく使われる基本メソッドなので、確実に覚えておくことが大切です。

また、フォームから複数の入力データを受け取ることもできます。 例えば会員登録フォームでは、名前、メールアドレス、パスワード、電話番号など、多くの入力項目があります。

それぞれの入力項目にname属性を設定し、Servlet側でgetParameterを使って取得することで、ユーザーの入力情報をプログラムで自由に扱えるようになります。

HTMLフォームとServletの連携は、Java Webアプリケーション開発の基本となる仕組みです。 このデータ取得処理を理解することで、ユーザー入力を扱うさまざまなWebシステムを構築できるようになります。

5. JDBCを使ってフォームデータをデータベースに登録するServletの実装例

5. JDBCを使ってフォームデータをデータベースに登録するServletの実装例
5. JDBCを使ってフォームデータをデータベースに登録するServletの実装例

HTMLフォームから送信されたデータは、Servletで受け取るだけでなく、データベースに保存することもできます。 Webシステムでは、ユーザー登録、注文管理、お問い合わせ管理などの情報をデータベースに保存する必要があります。

Javaでデータベース操作を行うときに使用する技術がJDBCです。 JDBCとは、Javaからデータベースへ接続し、SQLを実行するための仕組みです。

HTMLフォームで入力されたデータをデータベースに登録する処理の基本的な流れは次のようになります。

HTMLフォーム入力

Servletが入力値を取得

JDBCでデータベース接続

SQLのINSERT文を実行

データベースに登録

具体的なServletの実装例を見てみましょう。 次のサンプルコードでは、HTMLフォームで入力されたユーザー名とメールアドレスをデータベースに登録します。


import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

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("/UserRegisterServlet")
public class UserRegisterServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String username = request.getParameter("username");
        String email = request.getParameter("email");

        try {

            Class.forName("com.mysql.cj.jdbc.Driver");

            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/sampledb",
                    "root",
                    "password");

            String sql = "INSERT INTO users (username, email) VALUES (?, ?)";

            PreparedStatement pstmt = conn.prepareStatement(sql);

            pstmt.setString(1, username);
            pstmt.setString(2, email);

            pstmt.executeUpdate();

            pstmt.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

このServletでは、まずrequest.getParameterを使ってHTMLフォームの入力値を取得しています。 その後、JDBCを使ってデータベースに接続し、INSERT文を実行してデータを登録しています。

executeUpdateメソッドは、INSERT、UPDATE、DELETEなどのデータ更新処理を実行するときに使用します。 このメソッドを実行すると、データベースにレコードが追加されます。

実際の業務システムでは、このような処理を使ってユーザー登録機能や注文登録機能などを実装します。 HTMLフォーム、Servlet、JDBC、データベースを組み合わせることで、実践的なJava Webアプリケーションを構築できるようになります。

また、データベース接続後は必ずConnectionやPreparedStatementをcloseして、リソースを解放することも重要です。 これを忘れると、データベース接続が増え続けてシステムのパフォーマンス低下の原因になります。

JDBCによるデータ登録処理は、Java Web開発の基本技術のひとつです。 フォーム入力とデータベース連携の仕組みを理解することで、より実践的なWebシステム開発が可能になります。

6. PreparedStatementを使った安全なデータ登録処理(SQLインジェクション対策)

6. PreparedStatementを使った安全なデータ登録処理(SQLインジェクション対策)
6. PreparedStatementを使った安全なデータ登録処理(SQLインジェクション対策)

Webアプリケーションでデータベース操作を行う場合は、セキュリティ対策が非常に重要になります。 特に注意しなければならないのがSQLインジェクションという攻撃です。

SQLインジェクションとは、ユーザー入力に悪意のあるSQLを埋め込み、データベースを不正操作する攻撃方法です。 例えばログインフォームや検索フォームなどで、入力値をそのままSQL文に連結してしまうと、攻撃の対象になる可能性があります。

例えば次のようなコードは危険です。


String username = request.getParameter("username");

String sql = "INSERT INTO users (username) VALUES ('" + username + "')";

このように文字列を連結してSQL文を作成すると、ユーザー入力によってSQL構造が変わってしまう可能性があります。 そのため、Java WebアプリケーションではPreparedStatementを使用することが推奨されています。

PreparedStatementは、SQL文とパラメータを分離して処理する仕組みです。 これにより、ユーザー入力がSQL構文として解釈されることを防ぐことができます。

PreparedStatementを使った安全なデータ登録処理の例を見てみましょう。


String sql = "INSERT INTO users (username, email) VALUES (?, ?)";

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setString(1, username);
pstmt.setString(2, email);

pstmt.executeUpdate();

このコードでは、疑問符を使ってパラメータを指定しています。 setStringメソッドを使って値を設定することで、安全にSQLを実行できます。

PreparedStatementを使用すると、次のようなメリットがあります。

  • SQLインジェクション対策ができる
  • SQL文の可読性が高くなる
  • データ型に応じた安全な値設定ができる
  • パフォーマンスが向上する場合がある

Java ServletとJDBCを使ったWebアプリケーション開発では、PreparedStatementを使うことが基本となります。 セキュリティ対策を考慮した安全なデータベース操作を行うことが、信頼性の高いシステムを作るうえで重要です。

HTMLフォームから受け取った入力データを安全に処理し、データベースに正しく保存することで、実用的なJava Webアプリケーションを構築できます。 そのため、Servlet、JDBC、PreparedStatementの連携をしっかり理解しておくことが大切です。

7. HTMLフォームからDBにデータを保存する仕組みを使うメリット

7. HTMLフォームからDBにデータを保存する仕組みを使うメリット
7. HTMLフォームからDBにデータを保存する仕組みを使うメリット

HTMLフォームとServletとデータベースを組み合わせることで、実用的なWebアプリケーションを作ることができます。現代のWebシステムの多くは、ユーザーが入力したデータをデータベースに保存し、その情報をもとに画面表示や処理を行っています。

例えば会員登録システムでは、ユーザーが入力した名前やメールアドレスをデータベースに保存します。ログイン機能では、その保存された情報を使って認証処理を行います。このように、フォーム入力とデータベース保存は多くのシステムの基本となる仕組みです。

HTMLフォームからデータベースにデータを保存する仕組みには、さまざまなメリットがあります。主なメリットを見ていきましょう。

  • ユーザー情報を永続的に保存できる
  • 検索機能や一覧表示などの機能を実装できる
  • ユーザー管理や注文管理などの業務システムを構築できる
  • 大量のデータを効率よく管理できる

もしデータベースを使用しなかった場合、ユーザーが入力した情報はプログラムの処理が終わると消えてしまいます。しかしデータベースに保存しておけば、サーバーを再起動してもデータは残り続けます。

このように、データを長期間保存できることを永続化と呼びます。業務システムではこの永続化が非常に重要です。顧客情報、注文履歴、問い合わせ履歴などはすべてデータベースに保存され、必要なときに取り出すことができます。

また、データベースに保存された情報は検索処理にも利用できます。例えばユーザー一覧画面では、保存されたユーザー情報をデータベースから取得して画面に表示します。

つまり次のような処理が可能になります。

フォーム入力
データベース保存
データ検索
一覧表示

この仕組みを実装することで、会員管理システムや商品管理システムなど、実務で使用される本格的なWebアプリケーションを作ることができます。

Java Web開発では、HTMLフォームで入力されたデータをServletが受け取り、JDBCを使ってデータベースへ保存するという構成が基本になります。この構成を理解することは、JavaエンジニアとしてWebシステムを開発するうえで非常に重要です。

8. フォーム入力データをDB保存するときの注意点(バリデーション・例外処理・文字コード)

8. フォーム入力データをDB保存するときの注意点(バリデーション・例外処理・文字コード)
8. フォーム入力データをDB保存するときの注意点(バリデーション・例外処理・文字コード)

HTMLフォームから送信されたデータをデータベースに保存するときは、いくつかの重要な注意点があります。特に重要なのが入力値チェック、例外処理、文字コードの設定です。

これらの処理を正しく実装しないと、システムエラーや不正データの登録が発生する可能性があります。安全で安定したWebアプリケーションを作るためには、これらの基本を理解することが重要です。

入力値チェック バリデーション

バリデーションとは、ユーザーが入力したデータが正しい形式かどうかを確認する処理です。例えば次のようなチェックを行います。

  • 名前が未入力ではないか
  • メールアドレスの形式が正しいか
  • 文字数が制限以内か

もし入力値のチェックを行わないと、空のデータや不正な値がデータベースに保存されてしまいます。そのため、Servletで入力値を確認する処理を実装することが重要です。


String username = request.getParameter("username");
String email = request.getParameter("email");

if (username == null || username.isEmpty()) {
    System.out.println("ユーザー名が入力されていません");
    return;
}

if (email == null || email.isEmpty()) {
    System.out.println("メールアドレスが入力されていません");
    return;
}

このように入力値をチェックすることで、データの品質を保つことができます。

例外処理

データベース処理では、接続エラーやSQLエラーなどが発生する可能性があります。そのため、例外処理を実装してエラーが発生したときに適切な対応を行う必要があります。


try {

    String sql = "INSERT INTO users (username, email) VALUES (?, ?)";
    PreparedStatement pstmt = conn.prepareStatement(sql);

    pstmt.setString(1, username);
    pstmt.setString(2, email);

    pstmt.executeUpdate();

} catch (Exception e) {

    System.out.println("データベースエラーが発生しました");
    e.printStackTrace();

}

例外処理を行うことで、システムが突然停止することを防ぐことができます。また、エラー内容をログとして記録することで、問題の原因を調査しやすくなります。

文字コード設定

日本語を扱うWebアプリケーションでは、文字コードの設定も非常に重要です。文字コードを設定しないと、日本語が文字化けする可能性があります。

Servletでは、次のように文字コードを設定することが一般的です。


request.setCharacterEncoding("UTF-8");

String username = request.getParameter("username");

また、レスポンス側でも文字コードを設定します。


response.setContentType("text/html;charset=UTF-8");

この設定を行うことで、日本語データを正しく処理できるようになります。特に日本語のユーザー名や住所などを扱うシステムでは、必ず設定する必要があります。

Webアプリケーション開発では、入力値チェック、例外処理、文字コード設定の三つが基本となる重要なポイントです。これらを意識してプログラムを書くことで、安定したシステムを作ることができます。

9. HTMLフォーム → Servlet → DB保存の重要ポイントまとめ

9. HTMLフォーム → Servlet → DB保存の重要ポイントまとめ
9. HTMLフォーム → Servlet → DB保存の重要ポイントまとめ

ここまで、HTMLフォームからServletを経由してデータベースにデータを保存する仕組みについて解説してきました。Javaを使ったWebアプリケーション開発では、この流れを理解することが非常に重要です。

HTMLフォームは、ユーザーがデータを入力するための画面です。ブラウザで入力されたデータは、HTTPリクエストとしてサーバーに送信されます。

そのリクエストを受け取るのがServletです。Servletではrequest.getParameterを使ってフォームの入力値を取得し、必要な処理を行います。

そして、取得したデータをJDBCを使ってデータベースに保存します。SQLのINSERT文を実行することで、新しいレコードをデータベースに登録できます。

この一連の流れを整理すると、次のようになります。

HTMLフォームで入力
ブラウザがデータ送信
Servletがデータ取得
JDBCでデータベース接続
SQLのINSERT文実行
データベース保存

また、安全で安定したシステムを作るためには、いくつかの重要なポイントがあります。

  • PreparedStatementを使ってSQLインジェクション対策を行う
  • 入力値チェックを行い不正データを防ぐ
  • 例外処理を実装してエラーに対応する
  • 文字コード設定を行い日本語を正しく処理する

これらのポイントを理解することで、会員登録機能、ログイン機能、問い合わせ管理システムなど、さまざまなWebシステムを構築できるようになります。

HTMLフォームとServletとデータベースの連携は、Java Web開発の基礎となる重要な技術です。この仕組みをしっかり理解することで、より実践的なWebアプリケーション開発へとステップアップすることができます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Servlet
JavaのSQLExceptionとは?発生原因と解決策、Servletでの例外処理を徹底解説
New2
Spring
【Thymeleaf】エラー表示を画面に出す方法(例:バリデーション)
New3
Spring
@PathVariableの使い方を完全ガイド!URLの一部を取り出す方法をSpring Bootで学ぼう
New4
Spring
@RequestParamでURLの値を取得する方法を初心者向けにやさしく解説!
人気記事
No.1
Java&Spring記事人気No1
Java
Java のコードの書き方ルール(インデント・改行など)|初心者向けに基礎から解説
No.2
Java&Spring記事人気No2
データベース
SQLのインデックス(INDEX)を完全ガイド!初心者でもわかる検索速度の向上方法
No.3
Java&Spring記事人気No3
データベース
SQLのビュー(VIEW)を完全ガイド!初心者でもわかる仮想テーブルの使い方
No.4
Java&Spring記事人気No4
HTML・CSS
HTMLのセレクトボックス(プルダウン)の使い方を完全ガイド!selectとoptionの基本を覚えよう