Java
Mac
Eclipse
PostgreSQL
servlet

[Java/PostgreSQL]WEBアプリをデータベースに接続する


この記事の内容

Eclipseで開発しているWEBアプリとデータベースを接続する方法


この記事を書いた理由

忘れた時に確認するため


この記事を書いた人の特徴

2011年 国立大教育学部卒(当時、プログラミングに全く興味なし)

大学卒業後、伊勢丹・リクルート等で勤務。

2016年頃〜 独学でプログラミングの勉強をスタート

(Railsでアプリを開発できるようになる)

2018年〜 SEとして勤務

RailsではDBの設定はコマンドを入力すれば自動的に処理できた。

Javaでは、その設定を自分でする必要があるのでその勉強を兼ねてこの記事を書いた。


開発環境

PC: Mac

OS: MacOS Mojave

言語: Java

IDE: Eclipse

DB: PostgreSQL

DB管理ツール: pgAdmin


前提条件


接続先のデータベースについて

・接続先のデータベースは、ローカル環境(ポート:5432)である

・sampleデータベースにはcustomerテーブルが存在する

・customerテーブルには下記のサンプルデータが格納されている


SQL

SELECT * FROM customer;



実行結果

  id  |   name   |        email        | password 

------+----------+---------------------+----------
0001 | sample1 | sample1@sample.com | password
0002 | sample2 | sample2@sample.com | password
0003 | sample3 | sample3@sample.com | password
0004 | sample4 | sample4@sample.com | password
0005 | sample5 | sample5@sample.com | password
0006 | sample6 | sample6@sample.com | password
0007 | sample7 | sample7@sample.com | password
0008 | sample8 | sample8@sample.com | password
0009 | sample9 | sample9@sample.com | password
0010 | sample10 | sample10@sample.com | password
(10 rows)


Eclipseで開発しているWEBアプリについて

・このWEBアプリは、動的WEBプロジェクト(Dynamic WEB Project)として作成

・このWEBアプリは http://localhost:8080/sample/sample2 にアクセスすることを想定する


コード例


Sampleapp2.java

package jp.co.sample;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Sampleapp2 extends HttpServlet {
private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<style>table,th,td,tr{border: 1px solid black};</style>");
out.println("<body>");
out.println("<h1>Sampleapp by Java Servlet</h1>");
out.println("</body>");
out.println("</html>");

String url = "jdbc:postgresql://localhost:5432/sample";
String user = "USERNAME";
String password = "PASSWORD";

try{
Class.forName("org.postgresql.Driver");
System.out.println("データベースの接続に成功しました");
} catch(Exception e) {
e.printStackTrace();
}

try {
Connection conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM customer";
ResultSet rset = stmt.executeQuery(sql);

out.println("<table>");
out.println("<tr><th>ID</th><th>UserName</th><th>Email</th></tr>");

while(rset.next()) {
out.println("<tr><td>" + rset.getString("id") + "</td><td>" + rset.getString("name") + "</td><td>" + rset.getString("email") + "</td></tr>");
}

out.println("</table>");

} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}

}
}



ポイント

WEB-INF/lib ディレクトリに .jarファイル を配置する

スクリーンショット 2019-05-12 16.50.05.png


実行結果

WEBアプリのサーバーを実行し、http://localhost:8080/sample/sample2 にアクセスする


Eclipseのコンソール

5月 12, 2019 4:26:33 午後 org.apache.catalina.startup.VersionLoggerListener log

情報: Server version name: Apache Tomcat/9.0.14

(中略)

5月 12, 2019 4:26:35 午後 org.apache.catalina.startup.Catalina start
情報: サーバーの起動 [1,215]ms
データベースの接続に成功しました


ブラウザで画面を確認

スクリーンショット 2019-05-12 16.52.01.png

データベースに格納したデータがブラウザに表示されていることが確認できた。


今後やりたいこと

データの保存・編集・更新・削除

AWS上に置いたDBとの連携


感想

Railsではコマンド数行書いて実行すれば自動的に設定できるDB.

Javaでは一つ一つ自分で設定しなければならないのが面倒。