トップ 一覧 検索 ヘルプ RSS ログイン

202111研修の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
*PostgreSQL
*Eclipse
*Tomcat
*JSP

!!!実施手順

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

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

!郵便番号データのダウンロード
*https://www.post.japanpost.jp/zipcode/download.html  ダウンロードページ
*https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html  「小書き」データのページ
*https://www.post.japanpost.jp/zipcode/dl/readme.html  データの説明

    全国地方公共団体コード(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」廃止(廃止データのみ使用))

*https://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip  郵便番号データの zip
*zip を windows で展開
*dir で確認
 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 '戸部%';
 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 '戸部%'
 town like '%戸部%'
 town like '%戸部'
 town_kana like '%トベ%'
 town like 'XXX%'
 town like '%XXX%'
 town like '%XXX'
 town_kana like '%アイウエオ%'

 select count(*) from ken_all where town 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 を追加
*完了

*http://localhost/sj/search
*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