【Java×MySQL】動的WebプロジェクトとDBの連携方法(Eclipse)

# 記事の内容
今回は、javaの動的webプロジェクトとMySQL(Maria DB)との接続について備忘録を作成します。

# 使用端末
■Windouws11
■Eclipse Version: 2022-09 (4.25.0)

# 前提条件
MySQL(Maria DB)はすでにお使いのPC端末にインストールされているものとします。

■ [MySQLのダウンロードサイトはこちらから](https://www.mysql.com/jp/downloads/)

■ [Maria DBのダウンロードサイトはこちら](https://mariadb.org/)

# MySQL(Maria DB)をインストールしたら次にすること
### MySQLのコネクターをダウンロードする。
#### MySQLのコネクターのダウンロード方法

■ <INS>MySQLコネクターの公式サイトへアクセスする。</INS>
　[MySQLコネクター公式サイト🔗](https://www.mysql.com/jp/products/connector/)

![MySQLコネクタ1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/dcd861b3-1377-c121-0fa0-408d90945d4c.jpeg)

「MySQLチームによる開発」欄より<font color=#ff0000>**JDBC Driver for MySQL(Connecter/)**</font>を選択します。

■ <INS>ダウンロード先の端末を選択する。</INS>
この画面では、MySQLコネクターをダウンロードする端末を選択するための画面です。
なので、リストボックスをクリックして中身を表示します。
![MySQL2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/f597f7f4-1d17-fe67-cdde-f00d0ea89aad.jpeg)

■ <INS>「Prattform Independent」を選択する。</INS>
リストボックスの中身を表示して、「**Prattform Independent**」を選択します。
![MySQL3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/631a3568-0186-7f6b-d623-a4f3da7f54bd.jpeg)

■ <INS>MySQLコネクターのダウンロード形式(tar形式またはZip形式)を選択する。</INS>
「**Prattform Independent**」をクリックすると、ダウンロードする形式(tar形式またはZip形式)を選ばせる画面が表示されます。
どちらでも良いですが、今回はZip形式のものを選択しましょう。

![MySQL4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/e7c0ec46-09fe-2197-8773-5943c0d6e23b.jpeg)

■ <INS>無料のアカウント登録画面が出るが、ここは「<font color="blue">**No Thanks**」</font>で！</INS>
さいごに無料の登録画面が表示されます。
アカウントを作っても良いしどちらでも構いませんが、特にアカウント作成する必要が無ければ<font color="Red">**右下の**</font><font color="blue">**「No Thanks, just start my douwnload」**</font>をクリックしましょう。

■ <INS>MySQLコネクターのZipファイルを解凍する。</INS>
Zipファイルを展開して、MySQLコネクター(.jar)があることを確認します。
![MySQL5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/e0547439-9f74-0aea-1686-3a31f9e1bb99.jpeg)

![MySQL6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/4491175b-36cd-c499-cd01-5d544a2fcbf8.jpeg)


# EclipseにMySQLコネクターをインポートする。

■ <INS>プロジェクトの「ビルドパスの構成」を選択する。</INS>
プロジェクトの右上で右クリック⇒「**ビルド・パス**」⇒「**ビルドパスの構成**」の順にクリックする。

![MySQL7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/81828822-5baf-a528-16e0-bdf4c3bf7490.jpeg)

■ <INS>「外部Jarの追加」を選択する。</INS>
Javaのビルドパス画面から「**外部Jarの追加**」の順にクリックします。

![MySQL8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/9cb28efa-e171-97d9-3b2c-36d2a820b1f0.jpeg)

■ <INS>「MySQLコネクター(.jar)」を選択する。</INS>
インポートする「MySQLコネクター」を選択します。

![MySQL9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/68bbfb72-1ec6-8af1-89a5-9b435cb5abb5.jpeg)

■<INS>Javaのビルドパス画面「MySQLコネクター(.jar)」がインポートされているのを確認する。</INS>
Javaのビルドパス画面に「MySQLコネクター(.jar)」がインポートされているのを確認します。
![MySQL10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/b2fe122c-aff1-b6f8-6044-b007698d6b6c.jpeg)

■<INS> <font color="Red">**WEB-INFフォルダ**</font>**配下**の<font color="Red">**libフォルダ**</font>に「MySQLコネクター(.jar)」を配置する。</INS>

さいごに、「MySQLコネクター(.jar)」をWEB-INFフォルダー配下の「libフォルダ」に配置します。
そうすることで、Tomcatが「MySQLコネクター」を認識することができます。
![MySQL11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/e471fe7e-24dc-e180-7ca2-96d4a4ecbce1.jpeg)

# 動的WebプロジェクトからMySQL(Maria DB)への設定方法

■<INS>**「META-INF」フォルダ**配下にコネクションプーリングファイルの**context.xml**を作成する。</INS>

データベースの接続情報を記載したコネクションプーリングファイル「context.xml」を作成します。
配置場所は、**「META-INF」フォルダ**配下に起きます。

つぎに、「context.xml」は、下記の通り記載します。

こうすることで、プロジェクトとMySQL(Maria DB)との接続の設定は完了です。

```context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true">
	<Resource
		name="jdbc/[データベース名]"
		auth="Container"
		type="javax.sql.DataSource"
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/[データベース名]"
		connectionProperties="autoReconnect=true;verifyServerCertificate=false;useSSL=false;requireSSL=false;useUnicode=true;characterEncoding=UTF-8;"
		username="root"
		password="XXXXXXXXX"
		validationQuery="select 1"/>
</Context>
```

# 接続用のテーブルを用意する。

今回は、下記のテーブルを用意します。

```shohinIns.sql
CREATE TABLE `shohinins` (
	`shohin_id` CHAR(4) NOT NULL COLLATE 'utf8mb4_general_ci',
	`shohin_mei` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
	`shohin_bunrui` VARCHAR(20) NOT NULL COLLATE 'utf8mb4_general_ci',
	`hanbai_tanka` INT(11) NULL DEFAULT NULL,
	`shiire_tanka` INT(11) NULL DEFAULT NULL,
	`torokubi` DATE NULL DEFAULT NULL,
	PRIMARY KEY (`shohin_id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;

```

![SQL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/7d5ee1e6-9df3-abec-2404-85462de2f2c7.jpeg)


# 動的WebプロジェクトからMySQL(Maria DB)へ接続する
では、いよいよプロジェクトとデータベースを接続してみましょう。

```connect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,javax.naming.*,javax.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Context context = new InitialContext();	
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/sample");
try(Connection db = ds.getConnection()){
	//SELECT
	PreparedStatement ps = db.prepareStatement("SELECT * FROM shohinIns");
	ResultSet rs = ps.executeQuery();
	System.out.println(rs);
	while (rs.next()){
%>
	<tr>
		<td><%=rs.getString("shohin_mei") %></td>
		<td><%=rs.getString("shohin_bunrui") %></td>
		<td><%=rs.getString("hanbai_tanka") %></td>
		<td><%=rs.getString("shiire_tanka") %></td>
		<td><%=rs.getString("torokubi") %></td>
	</tr>
<%	
	}
}
%>

データベースへの接続に成功しました。
</body>
</html>
```

■プロジェクトの上で右クリックして、[実行]⇒[サーバーで実行]を選択します。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/253ad4a5-d92c-3e77-2c3c-3b638e947750.jpeg)



■デプロイ先のTomcatのバージョンを選択します。
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/ade59478-ab9f-6e81-882f-397642f6abab.jpeg)


■URLアドレスバーにURLを入力します。
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/9b2542b5-894f-ba1f-69f5-8daea2310f56.jpeg)


以上で、動的WebプロジェクトとMySQL(Maria DB)との接続連携でした。


# 参考にしたサイト
下記は、参考にさせていただいたサイトです。ぜひご覧になてみてくださいね。

■ <font color="blue"><INS>**ジョイタスネット 様**</INS></font>
JSP & Servlet-8日目(MySQLとの連携)
⇒[公式サイト](https://joytas.net/programming/jspservlet08)

■ <font color="blue"><INS>**ITリテラシー拡大ブログ 様**</INS></font>
【Javaで作成するWebアプリケーション#2】データベースに接続して作成する基本的なログイン機能
⇒[公式サイト](https://skill-for-it.com/java_webapp_2/#toc5)

■<font color="blue"><INS>**ts0818のブログ 様**</INS></font>
Java Eclipseで動的 WebプロジェクトでMySQL接続
⇒[公式サイト](https://ts0818.hatenablog.com/entry/2017/08/01/235309)