入社したての新人がJavaのServletを用いてCRUDアプリを作ってみた!
皆さんはじめまして!業界未経験入社の中嶋です。
僕の会社ではナカジマが3人いるので、名前を呼ぶとみんな反応してくれます笑
先日、有給を使って6泊7日でタイに行ってきました!
マンゴーが大変甘くて美味しかったので、お土産にドライマンゴーを買ったのですが、酸っぱくて悲しかったです(ノД`)シクシク
今回は、入社したての新人でも簡単に作れるWebアプリを作っていきたいと思います!
以下のツールを使って開発環境を構築し、ユーザーアカウントのCRUDができるWebアプリを作っていきます。
■ Windows 10 ( Mac でも可)
■ Eclipse Version : 2023-12 (4.30.0)
■ Tomcat Version : 10.1.18
■ XAMPP Version : 8.0.30 / PHP 8.0.30
■ Apache Version : 2.4.58
■ MySQL (MariaDB) Version : 10.4.32
目次
CRUDとは?
CRUD とは 4 つの操作の頭文字を取ったものになります。
- Create (作成): データを新たに作成します。通常、データベースに新しいレコードを挿入する操作です。
- Read (読み取り): データを取得します。データベースから既存のデータを取得する操作で、クエリや検索が含まれます。
- Update (更新): データを変更・更新します。データベース内の既存のレコードを変更するための操作です。
- Delete (削除): データを削除します。データベースから既存のレコードを削除する操作です。
⇒CRUD アプリは、データベースや情報システムなどで、基本的なデータ操作のできるアプリになります!
環境構築
XAMPP 編
ダウンロード&インストール
Cドライブ直下に
C:\00_TechBlog\CRUDappを作成します。
㌽フォルダ名に日本語や長い文字列を含めると、プログラムが正常に動作しない可能性があります。XAMPP にアクセスし、
バージョン:8.0.30 / PHP 8.0.30を ダウンロード します。

ダウンロードされた
xampp-windows-x64-8.0.30-0-VS16-installer.exeファイルを開きます(実行)。Installation folderが出るまで Next を押します。
※Select Componentsは デフォルトで問題ありません。

Installation folderがでたらインストール先フォルダを変更します。残りの
Setup画面は Next を押して、Finish まで進めます。
Apache と MySQL 起動
phpMyAdmin 起動
ECLIPSE 編
ダウンロード&インストール(解凍)
Pleiades All in One Eclipse 2023 から
Windows x64 Javaをダウンロード するダウンロード後
pleiades-2023-12-java-win-64bit-jre_20231211.exeファイルを開きます(管理者として実行)。- ユーザーアカウント制御は はい を押します。 ※出ない場合もあります
- 詳細情報 を押します。 ※出ない場合もあります
- 実行 を押します。 ※出ない場合もあります
作成先フォルダを変更し 解凍 を押します(解凍が始まる...体感 5 分くらい?)。
ECLIPSE 起動
C:\00_TechBlog\CRUDapp\workspace_CRUDappフォルダを作成します。C:\00_TechBlog\CRUDapp\pleiades2023-12\eclipse\eclipse.exeを開きます(実行)。- キャッシュのクリーンアップが開始されます(体感 1 分くらい)。
- ワークスペース- ディレクトリーを変更し、起動 を押します。
実装
データベース編
DB 作成
C:\00_TechBlog\CRUDapp\xampp\xampp-control.exeを開きます(実行)。ApacheとMySQLの Start を押します。MySQLのAdminを押します。- データベース タブを選択します。
tech_blogと入力し 作成 を押します。

テーブル作成
SQL タブを選択し以下のクエリを実行します。
※やり直せるようにデータベースの削除から記載しますが、注意して取り扱ってください。-- 既存の tech_blog データベースがあれば削除 DROP DATABASE IF EXISTS tech_blog; -- 新しい tech_blog データベースを作成 CREATE DATABASE tech_blog; -- tech_blog データベースを使用 USE tech_blog; -- 既存の r_user テーブルがあれば削除 DROP TABLE IF EXISTSr_user; -- r_userテーブルの作成 CREATE TABLEr_user(USER_NOINT AUTO_INCREMENT NOT NULL, -- ユーザー番号(自動採番)USER_IDINT NOT NULL, -- ユーザーID(必須)USER_NAMEVARCHAR(255) NOT NULL, -- ユーザー名(必須)USER_PASSWDINT(8) NULL, -- パスワード(任意)USER_BIRTHDAYDATE NULL DEFAULT NULL, -- 誕生日(任意)DELETE_FLAGBOOLEAN NOT NULL DEFAULT false, -- 削除フラグ(false: 有効, true: 削除済み) PRIMARY KEY (USER_NO) -- 主キーはユーザー番号 ) ENGINE = InnoDB;
オートインクリメントとは
- オートインクリメント(自動採番)は、データベースに新しい行を挿入する際に、その行のプライマリキーの値を自動的に増分させる機能です。主にプライマリキーの値を一意にするために使用されます。
メリット:
- 各行に一意の数値が割り当てられるため、データの一意性が確保されます。
- データの管理が容易になります。
- 同じ値が誤って挿入されるリスクが低減します。
デメリット:
- データベースは新しい行の値を自動的に増分します。特定の値から始めたい場合は、初期値の管理が必要になることがあります。
- 分散環境や複数のデータベースサーバーを使用する場合、値の重複により競合や同期の問題が発生する可能性があります。
⇒オートインクリメントを利用することで、データベースの管理がより効率的になり、データの整合性を保つことができます。
データ挿入
SQL タブを選択し以下のクエリを実行する
-- レコードの挿入 INSERT INTOr_user(USER_ID,USER_NAME,USER_PASSWD,USER_BIRTHDAY,DELETE_FLAG) VALUES ( 20240101, '20240101', 20240101, '2024-01-01', 'false'), ( 20240102, '20240102', 20240102, '2024-01-02', 'false'), ( 20240103, '20240103', 20240103, '2024-01-03', 'false');
ソースコード編
動的 WEB プロジェクト作成
- ファイル(F)⇒ 新規(N)⇒ その他⇒ 動的 Web プロジェクト の順に押します。
- 新規動的 Web プロジェクト
- web.xml デプロイメントにチェックを付けます。

- CRUDapp のプロジェクトが作成されます。
ソースコードの追加
- i-Vinci_Blog-Java-CRUD-Appsリポジトリ からダウンロードした
srcフォルダをC:\00_TechBlog\CRUDapp\workspace_CRUDapp\CRUDapp配下にペーストし、置き換えます。 Eclipseの
プロジェクト・エクスプローラーをリフレッシュします。
プロジェクトルート
src配下のプロジェクトルートが以下と同じか確認します。
C:\00_TechBlog\CRUDapp\workspace_CRUDapp\CRUDapp ※一部省略 |__ src |__ main |__ java | |__ jp | |__ co | |__ controller | | |__ UserAddServlet.java | | |__ UserDeleteServlet.java | | |__ UserDeleteServlet_v1.java | | |__ UserEditServlet.java | | |__ UserRestoreServlet.java | | |__ UserServlet.java | |__ model | |__ DatabaseConnector.java | |__ User.java | |__ UserDao.java |__ webapp |__ META-INF | |__ MANIFEST.MF |__ WEB-INF | |__ lib | | |__ mysql-connector-j-8.3.0.jar(この後の手順で追加) | |__ web.xml |__ login.jsp |__ userAdd.jsp |__ userEdit.jsp |__ userList.jsp
MVC モデルとは
MVC(Model-View-Controller)モデルは、ソフトウェア開発におけるデザインパターンの一つであり、アプリケーションの内部構造を構築するために使用されます。このモデルは、アプリケーションを3つの主要なコンポーネントに分割します。
- Model(モデル): ビジネスロジックやデータ処理を担当する部分で、データの操作や更新、バリデーションなどの機能が含まれます。
- View(ビュー): ユーザーインターフェースを表示する部分で、データの表示やユーザーからの入力を受け付けます。
- Controller(コントローラ): ユーザーからの入力を受け取り、それに基づいてModelとViewを制御する部分で、ビジネスロジックとユーザーインターフェースの間の仲介役として機能します。
⇒MVCモデルは、アプリケーションの構造化とメンテナンス性を向上させるために使用され、特に大規模なプロジェクトや複雑なアプリケーションに適しています。
フロントエンド(JSP)
ユーザーインターフェースの表示とユーザーの入力を受け付けます。
ユーザーからの情報をサーバーに送信し、結果を表示します。
| View | 処理詳細 |
|---|---|
| login.jsp | ログイン画面 |
| userAdd.jsp | 新規データ入力画面 |
| userEdit.jsp | データ編集画面 |
| userList.jsp | データ一覧画面(削除・復元画面) |
バックエンド(Java/Servlet)
CRUD 操作やビジネスロジックを担当します。
データベースとの通信やデータの処理は主にここで行います。
| controller | 処理詳細 |
|---|---|
| UserAddServlet.java | データの新規追加 |
| UserDeleteServlet.java | データの物理削除※1 |
| UserDeleteServlet_v1.java | データの論理削除※1 |
| UserEditServlet.java | データの編集 |
| UserRestoreServlet.java | データの論理削除の復元 |
| UserServlet.java | データの一覧表示 |
※1 論理削除と物理削除の違い
- 論理削除: データを残して削除フラグを立てる。復元可能。
- 物理削除: データを完全に削除。復元不可。
| model | 処理詳細 |
|---|---|
| DatabaseConnector.java | データベース接続情報 |
| User.java | ユーザー情報 |
| UserDao.java | データベース操作 |
Mysql ドライバーの追加(超重要)
MySQL Community Downloads にアクセスした後、Connector/J 8.3.0 の
Select Operating System : Platform Independentを選択し、ダウンロードする。ダウンロードされたzipファイルを解凍し、
mysql-connector-j-8.3.0.jarファイルをコピーする。C:\00_TechBlog\CRUDapp\workspace_CRUDapp\CRUDapp\src\main\webapp\WEB-INF\lib配下にペーストする。mysql-connector-j-8.3.0.jarファイル⇒ 右クリック⇒ ビルド・パス(B) ⇒ビルド・パスに追加(A) の順で押す参照ライブラリーに追加される
Maven プロジェクトへ変換(超重要)
元々動的プロジェクトではMySQLと接続が困難と勘違いしていたため。現段階では変換しなくても接続できるため不要
pom.xml:マッピングや設定
同上のため不要
実行編
Webサーバーの実行(画面表示)
Eclipseを開く。
C:\00_TechBlog\CRUDapp\pleiades2023-12\eclipse\eclipse.exe(実行)- リソースをサーバーに追加する。 Tomcat10_Java21 ⇒右クリック ⇒追加及び除去(A) の順で押す

- CRUDapp ⇒追加 ⇒完了 の順で押す

/CRUDapp/src/main/webapp/login.jspファイル ⇒右クリック ⇒デバック ⇒1サーバーでデバック の順で押す

- Tomcat10_Java21 ⇒☑このプロジェクトを実行するときは常にこのサーバーを使用(P) ⇒完了(F) の順で押す

- Googleなどのブラウザで
http://localhost:8080/CRUDapp/login.jspLogin画面が開けば成功

DB接続
XAMPP Control Panelを開く
C:\00_TechBlog\CRUDapp\xampp\xampp-control.exe(実行)MySQLの Start を押す- ブラウザの Login ボタンを押下後、 User List 画面にデータが挿入されていれば成功

知識をくれたサイト
既存の r_user テーブルを削除
-- 1~3のやってることは一緒!
-- 1
DELETE FROM `r_user`;
--auto_increment(オートインクリメント)の連番をリセット
ALTER TABLE `r_user` auto_increment = 1;
-- 2
DROP TABLE `r_user`;
-- 3
DROP TABLE IF EXISTS `r_user`;参考サイト:SQL文 DELETE・TRUNCATE・DROPの違い, AUTO_INCREMENT の使用
Mavenプロジェクトでのアプリの作り方
知識がないと動的Webプロジェクトを作った後にMavenプロジェクトに変換するミスをします。
参考サイト:Eclipseを使ってTomcat+JSP+Servlet+MySQLでメモアプリ作成
MySQL接続方法
今はこんな簡単に接続できます。時代の進歩は恐ろしい、、、
参考サイト:【Java】MySQLを絶対に接続させたい!!!~JDBCドライバの取得とJARファイル位置について~
MySQLでのエラー対処法
大事なデータがあるのにMySQLが起動しない事があり、環境構築をやり直せれば良いですが、そうもいかないとき助かりました。
原因を探ってもなかなかエラーにたどり着けないですよね。
参考サイト:XAMPP で MySQL が予期せずシャットダウンするエラー
















