サーブレット/JSPの学習環境をVSCodeで構築(応用編)
※ 上記サーブレット/JSPの学習環境をVSCodeで構築するが完了しているものとして,本稿ではやや高度なトピックを扱います。キーワードを以下に示します。
Keywords: Docker / データベース / Git / JSTL / シェルスクリプト / デバッガ
※ 無料部分の文献情報を先に掲載します。
1. DockerコンテナにMysql環境を構築して接続する
1.1. 必要なツールのインストール
Dockerをインストールしてください。homebrewでやるのが簡単だと思います。
$ brew install --cask docker
インストールできたら,Docekr Desktopを立ち上げておいてください。
1.2. コンテナ起動のためのファイルを作成
ディレクトリ構成
classroom
│ docker-compose.yml
│ pom.xml
│
├───docs
│
├───mysql
│ ├───conf.d
│ │ my.cnf
│ ├───init.d
│ │ init.sql
│ └───Dockerfile
│
├───src
│ └───main
│ ├───java
│ └───resources
│
└───target
docker compose.ymlを次のように作成してください。
services:
mysql:
container_name: "mysql"
hostname: "mysql"
build:
context: "."
dockerfile: "./mysql/Dockerfile"
volumes:
- ./mysql/conf.d/:/etc/mysql/conf.d/
- ./mysql/init.d/:/docker-entrypoint-initdb.d
ports:
- "13306:3306"
DockerFileを次のように作成してください。
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD password
ENV TZ "Asia/Tokyo"
RUN microdnf update -y \
&& microdnf install -y glibc-locale-source \
&& localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
my.cnfファイルを次のように作成してください。
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
必要に応じて,init.sqlファイルに,データベースの初期化用クエリを書いてください。
CREATE DATABASE training_db;
USE training_db;
-- 学生テーブルの作成
CREATE TABLE Students (
student_id CHAR(4) NOT NULL,
name NVARCHAR(31) NOT NULL,
email VARCHAR(63) NOT NULL,
password VARCHAR(63) NOT NULL,
PRIMARY KEY (student_id)
);
...
1.3. コンテナの起動
docker composeを実行してください。
$ docker compose up -d
コンテナを起動できたら,以下のコマンドを使用し,mysqlをbashで操作してみてください。
$ docker-compose exec mysql bash
# bash-5.1が起動する
$ mysql -u root -p
# MYSQL_ROOT_PASSWORDを入力
1.4 pom.xmlに依存関係を追加
<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.27.1</version>
</dependency>
1.5. ConnectionManagerクラスの作成
次のようなコネクションマネージャを作成しておくと便利です。
package jp.co.collasho.classroom.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* コネクションマネージャクラス
*/
public class ConnectionManager {
/** コネクション */
private Connection conn;
/** JDBCURL */
private String jdbcUrl = "jdbc:mysql://localhost:13306/training_db";
/** ユーザ名 */
private String user = "root";
/** パスワード */
private String password = "password";
/**
* データベース接続
*
* @return コネクション
*/
public Connection getConnection() {
if (this.conn == null) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
this.conn = DriverManager.getConnection(this.jdbcUrl, this.user, this.password);
this.conn.setAutoCommit(false);
System.out.println("データベースに接続しました。");
} catch (SQLException e) {
throw new RuntimeException("データベースの接続に失敗しました。", e);
} catch (ClassNotFoundException e) {
throw new RuntimeException("ドライバが見つからないためデータベースの接続に失敗しました。", e);
}
}
return this.conn;
}
/**
* データベース切断
*/
public void closeConnection() {
try {
if (this.conn != null) {
this.conn.close();
}
} catch (SQLException e) {
throw new RuntimeException("データベースの切断に失敗しました。", e);
} finally {
this.conn = null;
}
}
/**
* コミット
*/
public void commit() {
try {
if (this.conn != null) {
this.conn.commit();
}
} catch (SQLException e) {
throw new RuntimeException("トランザクションのコミットに失敗しました。", e);
}
}
/**
* ロールバック
*/
public void rollback() {
try {
if (this.conn != null) {
this.conn.rollback();
}
} catch (SQLException e) {
throw new RuntimeException("トランザクションのロールバックに失敗しました。", e);
}
}
}
1.6. 接続テスト
CheckConnection.javaは適当に作成してください。
package jp.co.collasho.classroom.test;
import java.sql.Connection;
import jp.co.collasho.classroom.common.ConnectionManager;
public class CheckConnection {
public static void main(String[] args) throws ClassNotFoundException {
ConnectionManager connectionManager = new ConnectionManager();
try (Connection conn = connectionManager.getConnection()) {
System.out.println("成功");
} catch (Exception e) {
System.out.println("失敗");
}
}
}
2. Gitでバージョン管理する
Gitのインストールや基本操作については,別の情報源に譲ります。
.gitignoreファイルを作成し,プロジェクトルート(classroomの直下)に配置してください。
# Java(Javaの自動生成ファイルを対象外にする)
*.class
*.jar
*.war
*.ear
# Idea(Ideaの自動生成ファイル/制御ファイルを対象外を対象外にする)
.idea
*.iml
*.iws
*.ipr
# OS(OSで自動で作成されるファイルを対象外にする)
Thumbs.db
.DS_Store
# Maven
/target/*
# But do not ignore WAR files
!/target/classroom.war
# Build
out
build
bin
# Other
*.log
*.swp
*.bak
# Security
DockerFile
バージョン管理を開始してください。
$ cd classroom
$ git init
3. JSTLのライブラリを使用する
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?