トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

202111研修

実施手順

PostgreSQL インストール

  • 2021/11 時点の最新1つ前
  • インストール先例 : Windows 10 Pro 2004 19041.1237
  • postgresql-12.8-2-windows-x64.exe
  • ダブルクリックでインストーラ起動
  • 「このアプリがデバイスに変更を加えることを許可しますか?」はい
  • 「Setup - PostgreSQL」Next
  • 「Installation Directory」変更なし、Next
  • 「Select Components」変更なし、Next
  • 「Data Directory」変更なし、Next
  • 「Password」入力2回、Next
  • 「Port」変更なし、Next
  • 「Advanced Options / Select Locale」変更なし、Next
  • 「Pre Installation Summary」変更なし、Next
  • 「Ready to Install」確認、Next
  • 「Installing」待機
  • 「Completing」Finish
  • 「スタックビルダー」キャンセル

psql 起動

  • スタート --> PostgreSQL 12 --> SQL Shell (psql)
  • SQL 動作確認
select * from pg_user;
  • サーバーヘルプ
help
help select
help alter table
  • クライアントヘルプ
\q
  • psql クライアントコマンド
\du
\l
\z

郵便番号データのダウンロード

   全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
   (旧)郵便番号(5桁)……………………………………… 半角数字
   郵便番号(7桁)……………………………………… 半角数字
   都道府県名 ………… 半角カタカナ(コード順に掲載) (注1)
   市区町村名 ………… 半角カタカナ(コード順に掲載) (注1)
   町域名 ……………… 半角カタカナ(五十音順に掲載) (注1)
   都道府県名 ………… 漢字(コード順に掲載) (注1,2)
   市区町村名 ………… 漢字(コード順に掲載) (注1,2)
   町域名 ……………… 漢字(五十音順に掲載) (注1,2)
   一町域が二以上の郵便番号で表される場合の表示 (注3) (「1」は該当、「0」は該当せず)
   小字毎に番地が起番されている町域の表示 (注4) (「1」は該当、「0」は該当せず)
   丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)
   一つの郵便番号で二以上の町域を表す場合の表示 (注5) (「1」は該当、「0」は該当せず)
   更新の表示(注6)(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))
   変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止(廃止データのみ使用))
D:\>dir d:\@user\tmp\ken_all\KEN_ALL.CSV
d:\@user\tmp\ken_all のディレクトリ
2021/11/09  22:49        12,331,932 KEN_ALL.CSV
              1 個のファイル          12,331,932 バイト

テスト用データベースの作成と削除

  • テスト用データベース TESTDB の作成
postgres=# CREATE DATABASE TESTDB;
CREATE DATABASE
  • データベース一覧確認
postgres=# \l
                                             データベース一覧
   名前    |  所有者  | エンコーディング |      照合順序      | Ctype(変換演算子)  |     アクセス権限
-----------+----------+------------------+--------------------+--------------------+-----------------------
 postgres  | postgres | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 |
 template0 | postgres | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 | =c/postgres          +
           |          |                  |                    |                    | postgres=CTc/postgres
 template1 | postgres | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 | =c/postgres          +
           |          |                  |                    |                    | postgres=CTc/postgres
 testdb    | postgres | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 |
(4 行)
  • 管理者DBに接続切り替え
postgres=# \c testdb
データベース"testdb"にユーザ"postgres"として接続しました。
  • 管理者DBに接続復旧
testdb=# \c postgres
データベース"postgres"にユーザ"postgres"として接続しました。
  • テスト用データベース TESTDB の削除
postgres=# DROP DATABASE TESTDB;
DROP DATABASE

郵便番号データテーブル作成

  • テーブル作成SQLの実行
CREATE TABLE ken_all (
jiscode VARCHAR(5),
zipcode_old VARCHAR(5),
zipcode VARCHAR(7),
prefecture_kana VARCHAR(15),
city_kana VARCHAR(31),
town_kana VARCHAR(255),
prefecture VARCHAR(15),
city VARCHAR(31),
town VARCHAR(255),
flag1 INTEGER,
flag2 INTEGER,
flag3 INTEGER,
flag4 INTEGER,
flag5 INTEGER,
flag6 INTEGER
);
postgres=#  CREATE TABLE zipcode (
postgres(#  jiscode VARCHAR(5),
postgres(#  zipcode_old VARCHAR(5),

...中略

postgres(#  flag6 INTEGER
postgres(#  );
CREATE TABLE
  • テーブル構造表示
\d KEN_ALL
postgres=# \d ken_all
                             テーブル"public.ken_all"
       列        |           型           | 照合順序 | Null 値を許容 | デフォルト
-----------------+------------------------+----------+---------------+------------
 jiscode         | character varying(5)   |          |               |
 zipcode_old     | character varying(5)   |          |               |

...以下略

  • ken_all.CSV からデータのインポート
\copy ken_all from 'D:\@user\tmp\ken_all\KEN_ALL.CSV' with csv encoding 'shift_jis';
postgres=# \copy ken_all from 'D:\@user\tmp\ken_all\KEN_ALL.CSV' with csv encoding 'shift_jis';
COPY 124506
  • ken_all 確認
postgres=# select count(*) from ken_all;
 count
--------
 124506
(1 行)
  • いろいろ検索
postgres=# select * from ken_all where town like 'XXX%';
 jiscode | zipcode_old | zipcode | prefecture_kana | city_kana |   town_kana | prefecture |     city     |   town   | flag1 | flag2 | flag3 | flag4 | flag5 | flag6
---------+-------------+---------+-----------------+-----------+-------------+------------+--------------+----------+-------+-------+-------+-------+-------+-------
 14103   | 220         | 2200042 | カナガワケン         | ヨコハマシニシク  | トベチョウ      | 神奈川県   | 横浜市西区   | 戸部町   |     0 |     0 |     1 |     0 |     0 |     0
 14103   | 220         | 2200041 | カナガワケン         | ヨコハマシニシク  | トベホンチョウ    | 神奈川県   | 横浜市西区   | 戸部本町 |     0 |     0 |     0 |     0 |     0 |     0
 23112   | 457         | 4570842 | アイチケン           | ナゴヤシミナミク | トベシタ       | 愛知県     | 名古屋市南区 | 戸部下   |     0 |     0 |     1 |     0 |     0 |     0
 23112   | 457         | 4570043 | アイチケン           | ナゴヤシミナミク | トベチョウ      | 愛知県     | 名古屋市南区 | 戸部町   |     0 |     0 |     1 |     0 |     0 |     0
(4 行)
town like 'XXX%'
town like '%XXX%'
town like '%XXX'
town_kana like '%アイウエオ%'
select count(*) from ken_all where town like 'XXX%';
select prefecture,count(*) from ken_all group by prefecture order by count(*);

Eclipse インストール

  • Eclipse (Pleiades All in One)
  • Windows 64bit
  • Java Full Edition
  • pleiades-2021-12-java-win-64bit-jre_20211108.zip
  • zip 展開
  • 配置先例1: C:\pleiades 起動 C:\pleiades\eclipse\eclipse.exe 実行
  • 配置先例2: C:\Users\nonaka\pleiades\ 起動 C:\Users\nonaka\pleiades\eclipse\eclipse.exe 実行

プロジェクト作成

  • ファイル --> 新規 --> その他
  • Web --> 動的 Web プロジェクト
  • 名称指定 samplejsp / sampleJSP / sampleJsp
  • 「web.xml デプロイメント奇術師の生成」にチェックを入れる
  • コンテキストルート : sj URL http://localhost/sj/testpage001.jsp URL のホスト名以降の開始文字列を指定
  • /sj/ を指定すると sampleJSP プロジェクトのファイルが利用される。

JSP ファイル作成

  • samplejsp プロジェクトの WebContent を右クリック
  • 新規 --> その他
  • Web --> JSP ファイル
  • 名称指定 testpage001.jsp
  • testpage001.jsp をダブルクリックして編集
雨ニモマケズ 風ニモマケズ
雪ニモ夏ノ暑サニモマケヌ 丈夫ナカラダヲモチ
慾ハナク 決シテ瞋ラズ イツモシヅカニワラッテヰル 
一日ニ玄米四合ト 味噌ト少シノ野菜ヲタベ
アラユルコトヲ ジブンヲカンジョウニ入レズニ
ヨクミキキシワカリ ソシテワスレズ
野原ノ松ノ林ノ蔭ノ 小サナ萓ブキノ小屋ニヰテ
東ニ病気ノコドモアレバ 行ッテ看病シテヤリ
西ニツカレタ母アレバ 行ッテソノ稲ノ束ヲ負ヒ
南ニ死ニサウナ人アレバ 行ッテコハガラナクテモイヽトイヒ
北ニケンクヮヤソショウガアレバ ツマラナイカラヤメロトイヒ
ヒドリノトキハナミダヲナガシ
サムサノナツハオロオロアルキ
ミンナニデクノボートヨバレ
ホメラレモセズ クニモサレズ
サウイフモノニ ワタシハナリタイ
  • <br />
  • <h1>...</h1> <h2>...</h2> <h6>...</h6>
  • <left>...</left> <center>...</center> <right>...</right>
  • <font size="1..7" color=#RRBBGG>
  • <b>...</b> bold 太字
  • <i>...</i> italic 斜字
  • <u>...</u> underline 下線
  • <a href="testpage002.jsp">testpage002</a>
  • <a href="testpage003.jsp">testpage003</a>

tomcat サーバ開始

  • 下タブ「サーバー」表示
  • 「使用可能なサーバがありません」をクリックすると「新規サーバ定義」画面
  • Tomcat v8 を選択、次へ
  • プロジェクトの「追加および削除」画面
  • sampleJSP を選択し「追加」
  • 「完了」で「サーバ」タブに「Tomcat v8」が追加される。
  • Tomcat v8 を右クリックし、「開始」

JSP 表示テスト

  • sampleJSP プロジェクトの testpage001.jsp を右クリックし、「実行」-->「サーバで実行」

入力フォームJSP作成

  • testpage002.jsp
  • <body>...</body> の間
<form action="testpage003.jsp">
  検索:<input type="text" size="20" name="search" />
  <input type="submit" name="submit" value="検索">
</form>
  • GET メソッド URL に入力パラメータが表示
  • /sj/testpage003.jsp?search=新宿&submit=検索
  • httpd アクセスログに記録される。個人情報がログに記録されるとNG
  • POST メソッド
  • /sj/testpage003.jsp
  • HTTP 要求 body で検索データが送信される
search=新宿&submit=検索
  • httpd アクセスログに記録されない。
  • 必要に応じてアプリケーションログに記録するコードを記述して記録する。
<form action="testpage003.jsp" method="POST">

処理 servlet 作成

  • servlet 保存用 Java パッケージ作成
  • sampleJSP プロジェクト --> Java リソース --> src
  • 新規 --> パッケージ
  • 名称#1 package
  • 名称#2 package.test
  • 名称#3 com.example.test
  • 自分のドメイン名を利用すると他者と重複しない。
  • 完了
  • com.example.test パッケージを右クリック
  • 新規-->サーブレット
  • 名称 SearchServlet
  • URL マッピングで /SearchServlet を /search に変更
  • 完了
  • doGet に追記
String msg="search servlet";
PrintWriter out = response.getWriter();
out.println("<html lang='ja'>");
out.println("<head> <title> Search Servlet </title> </head>";
out.println("<body>");
out.println("<h1>"+msg+"</h1>");
out.println("</body></html>");
  • Tomcat v8 サーバを右クリックし、追加および削除
  • SearchServlet を追加
  • 完了
  • doPost メソッド を SearchServlet に追記
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html; charset=UTF-8");
  String search = request.getParameter("search");
  try {
    Class.forName("org.postgresql.Driver");
    Connection conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres","postgres_password");
    String sql="select * from ken_all where town like ?";
    PreparedStatement pst=conn.prepareStatement(sql);
    pst.setString(1,search);
    ResultSet rs=pst.executeQuery();
    while(rs.next()) {
 

結果表示 JSP 作成

  • testpage003.jsp

参考資料

ゼロからわかる サーブレット&JSP 超入門

  • ISBN978-4-741-9684-8