読者です 読者をやめる 読者になる 読者になる

asaのブログ

プログラミングの勉強まとめ

タグライブラリまとめ1

 

独習Javaサーバサイド編

独習Javaサーバサイド編

 

 この参考書タグライブラリがかなり続きます。終わるとサーブレットなので、さらっとまとめて次に進みます(進みたい)。

 タグライブラリは、Javaの複雑になりがちなロジックを要件に応じてタグ化して、ソースを簡略にしたものです。非エンジニアにも使いやすいように、緩くコードを書いてもしっかり動作します。

 

 Coreタグライブラリ

 Javaの基本的な制御構文を代替するライブラリです。

  • <c:set>・・・変数の指定 (例:String str = "Hello,world";的な感じ)
  • <c:out>・・・文字列の出力 (例:System.out.println(str); )
  • <c:if>・・・if命令
  • <c:choose>・・・switch命令
  • <c:forEach>・・・for文
  • <c:redirect>・・・そのまま。指定したページにリダイレクト
  • <c:import>・・・指定したページをインポートします。

 はい、とういうわけで書いてみました。

gist165bd5e6f193a835cabbf487a30622f2

 

 Databaseタグライブラリ

 前回までやってたDatabaseへのデータの登録・更新・検索はタグライブラリでも行うことができます。データベース連携の基本的機能を提供するライブラリです。

  • <sql:setDataSource>・・・データベース接続を確立
  • <sql:query>・・・SELECT命令の実行
  • <sql:update>・・・SELECT命令以外の実行
  • <s1l:param>・・・プレースホルダに値をセット

  そんなわけで、前回作った全データ表示をタグライブラリで書き直しました。

gist0287c2e6d3ec79fdebd1c3a2d502015c

あと2つタグライブラリ紹介して終わります。

 

書籍管理システムの作成2

 前回の続きです。書籍管理システムの検索システムと、全データ表示を取り扱います。

 

 検索システム

 タイトル検索を実装しました。検索用語が含まれるタイトルを探すためには、SQL文のLIKEに続けて”%検索用語%”としてやる必要があります。検索用語はindexページでPOSTされた値を使いたいので、今回は"searcher"として取得しました。

 

 結果セットが返ってくると、それをnext()でfalse返るまで回して検索結果を表示します。

gist25389bb08ecf0b6fafc7c1dbad52a7f4

 

 全データ表示

 全データ表示は、検索システムとほとんど変わりありません。クエリが全てのデータを取得するように発行されているだけです。

gist1acf3700cbd9690c4cc24e0325843b76

 実際に作ったデータが返ってくると面白いですね(^ ^)

 

書籍管理システムの作成1

 文書を登録、検索、全表示できるシステムをjspで作成しました。おおもとの参考書は下のやつです。こまめに作ったので、すごく簡単だった印象があります。

独習Javaサーバサイド編

独習Javaサーバサイド編

 

 

 コード

 構成を、まず最初に開かれる"indexページ"、登録を行う"responseページ"、検索結果を返す"searchページ"、あと全てのデータを見るための"resultページ"の4つで作りました。

 まずはindexページ

gistb0f873fa207e087070460abae7f563ef

 次に、登録を行うためのresponseページです。

作成したJDBCデータソースを取得するために、InitialContextクラスのlookupメソッドを使います。lookupメソッドで返ってくるのがObjectクラスなので、DataSourceオブジェクトへキャストしています。

 

 接続を確立するにはDataSourceオブジェクトのgetConnectionメソッドでConnectionオブジェクトをもらい、先に宣言しておいたConnectiononオブジェクト"db"につなぐことで接続を確立します。

 

 クエリを発行するためには、PreparedStatementが戻り値のConnectionオブジェクトのpreparedstatmentメソッドを使います。プレースホルダには、indexページでPOSTされた値を取得したいので、setXX(StringやIntなど)でセットしてやります。

 

 こうして発行するクエリの準備ができたら、executeUpdateで実際にクエリを発行して登録します。

gist4ab380b6477217d0736a3f2a54a3f1f4

 続きます

 

ALDS1_3_Aスタックの実装

 参考書の続きです。大体一日一問といているような感じです。今回もC++でしか回答が載っていないので、Javaで実装しました。ほとんど参考書どおりですが、例外だけ作ってません。Publicの回答を見ると、BufferedReader使っていますが、今回はScannerクラスを使っています。

 

 

 コード

giste1c05acea4c69bfb7dd5428c6a3c3dc6

無事おわり。

ALDS1_2_Cの解説(安定なソート)

 参考書を新しく購入しました。下の本です↓。解説がC++で書かれているので、Javaで実装しました。

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

 

  コード

 一応”accepted”になりましたが、これだとかなりメモリを食います(その上長い)。本当に参考程度のコードです。

 

gist0e11e4d35da6b88ce66e77b65ca03d64

 

情報収集法まとめ

 いつも見ている情報源をまとめました。書籍だけでは、分からない点や今どういうことが問題になっているのか把握するのに利用しています。参考に下のサイトを利用させていただきました。

 下を元に、省いたり付け足したりしています。

 

qiita.com

 

 ニュースアプリ

 上の記事でも書かれていたとおり、とても参考になります。

 ・はてなブックマーク - 人気エントリー - テクノロジー

 

 ITニュース

 ・CodeZine

 ・TechCrunch

 

 Web系企業・開発者ブログ

 ・クックパッド開発者ブログ

 ・Hatena Developer Blog

 ・pixiv inside

 ・プログラミング - はてなブログ グループ

 

 質問系Webサイト

 ・teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム

 

 技術系イベント検索サイト

 ・dots. [ドッツ] - IT勉強会・セミナーなどのイベント情報サイト

 

 競技プログラミング・スキルチェック

 ・AtCoder

 ・AIZU ONLINE JUDGE: Programming Challenge

 ・paiza

 

 現状こんな感じです。JavaAndroid関連、その他必要に応じて付け足していきます。

 

NetbeansとMySQLの接続(JSPページの作成) 2

 前回からの続きになります。

 前回、JSPページとデータベースを準備しました。今回は、データ・ソースと接続プールを設定して、JSPページからデータ・ソースへの参照を行います。

 参考書は引き続き『独習Javaサーバサイド編』と、新たにNetbeansチュートリアルを使っています。

 

独習Javaサーバサイド編

独習Javaサーバサイド編

 

netbeans.org

 

 データ・ソースと接続プールの設定

 ウィンドウから"新規ファイル" ⇒ ”GlassFish” ⇒ "JDBCリソース"を選択します。

"新規のJDBC接続プールの作成"を選択し、今回JNDI名を"jdbc/BOOKS"としました。

 

 追加のプロパティを飛ばして、"データベース接続の選択"からJDBC接続プール名を"booksPool"としました。最後に接続を"selfjsp"に対する接続に設定して終了します。プロジェクトの構成ファイルのなかにglassfish-resources.xmlが作成されるので、切り取ってサーバリソースに移します(今回JavaEE5を使用しています)。

 

 プロジェクトをデプロイすると、無事にJDBCリソースと接続プールが設定されます。

 

  データ・ソースへの参照

  データソースへの参照は構成ファイル内にあるweb.xmlで行います。ダブルクリックして、参照の中のリソース参照を選択します。追加ボタンを押すと小ウィンドウがでますので、リソース名に"jdbc/BOOKS"を入力し、javax.sql.ConnectionPoolDataSourceを選択してください(無いときはソースから編集します)。これで、参照は完了です。

 

 動作

  実際に動かしてみるとこんな感じです。本の内容は適当です。

 

f:id:asa_r:20170407184652p:plain

f:id:asa_r:20170407184657p:plain

 

 こんな感じで、無事にJSPページからデータベースにアクセスできました。