Corredor

ウェブ、プログラミングの勉強メモ。

Java

Java サーブレットで JSON を返却する方法

Struts 的な、薄いサーブレットで JSON を返却する方法。 Action クラスで以下のようにしてレスポンスに JSON 文字列を書き込んでいき、return null; で終わらせれば良い。 response.setContentType("applicaton/json"); PrintWriter out = response.getWrit…

Shift-JIS のページから Ajax 送信しようとして文字化けしたときに… クライアントサイド (JavaScript) とサーバサイド (Java) でエンコード・デコード

古いシステムを改修していて、Shift-JIS でエンコーディングされているページから Ajax 送信する必要があり、日本語が文字化けしたので色々やったメモ。 FormData を使って、文字列だけでなく画像ファイルも一緒に送信する必要があったので、色々と制限があ…

Java ベースのテンプレートエンジン Velocity を使ったメモ

Jakartaプロジェクト カンタンVelocity作者: 栗林克明出版社/メーカー: 秀和システム発売日: 2003/08/28メディア: 単行本 クリック: 14回この商品を含むブログ (2件) を見る 少し前の案件で、Velocity (ヴェロシティ) という Java ベースのテンプレートエン…

「im4java」を使って Java から ImageMagick を呼び出して画像変換や画像情報取得をする

前回紹介した、コマンドラインから画像の変換処理などができる ImageMagick。今回はこの ImageMagick を Java プログラムから呼び出す時に使える、im4java というライブラリを紹介する。 im4java im4java は、ImageMagick のコマンドファイル (convert.exe …

ImageIO.read() が異常終了したけど catch 句で例外が捕捉できなかった

Java プログラムで ImageIO.read() を使って、画像ファイルを BuffereImage オブジェクトとして読み込もうとする処理があった。 // イメージ的にはこんな感じの処理部分 BufferedImage bfImg; try { bfImg = ImageIO.read(file); } catch(Exception e) { // …

ToStringBuilder を使うと JavaBeans の中身を簡単にログ出力できる

Apache Commons Lang の中に、ToStringBuilder というライブラリがある。これを使うと、いわゆる JavaBeans の中身を簡単にログ出力させられる。 // DB から値を取得して保持する DTO のようなモノとか HogeBean hogeBean = HogeTable.selectNewestRecord();…

JMap でヒープダンプを取得する

JDK に付属の JMap というコマンドラインツールで、ヒープメモリ内の情報を出力できる。 参考:jmapユーティリティ 「ダンプ」という言葉に馴染みがなかったので今一度調べたが、要は「その瞬間」の情報をまとめて吐き出す、ということ。JMap は実行中の Jav…

JStat でヒープに関する統計情報を取得する

JDK 付属のコマンドラインツールである JStat を使うと、ヒープに関する統計情報を文字列で取得できる。 リアルタイムにグラフで推移を確認できる JConsole と用途に応じて使い分けると良い。 参考:jstat まずは対象の Java のプロセス ID を jps.exe で調…

JConsole で Java アプリの CPU・メモリ使用状況を確認する

JDK をインストールすると、標準で JConsole というものがついてくる。これを使うと、起動中の Java アプリの CPU やメモリの使用状況をリアルタイムに確認できる。 今回説明する環境は Windows 前提だが、Linux 系でも大差ない。 参考:JConsoleの使用 - Ja…

Java の replace() と replaceAll()、ついでに StringUtils#replaceOnce()

String#replace() は正規表現を使わない。 String#replaceAll() は引数を正規表現として扱う。 /* replace() : 正規表現未使用 */ String src = "hoge?fuga."; String dest = src.replace(".", "-"); // dest => "hoge?fuga." /* replaceAll() : 正規表現で…

static final な List や Map をサクッと宣言しつつ、add() や put() も許さない

Java の final 修飾子は代入を禁止するだけで、インスタンスの内容を変更できなくするわけではない。そのため、リストの内容を追加・変更させないつもりで static final などと打つだけでは、List#add() ができてしまうのだ。 // 要素を変更されたくない Lis…

Key と Value を入れ替えた Map を取得する方法:Java と JavaScript 編

Key と Value を入れ替えた Map (連想配列) を作る方法を調べた。 Java も JavaScript も、PHP でいうところの array_flip() みたいな標準メソッドは存在しなかったので、簡単なやり方を説明する。 参考:array_flip関数:配列のキーと値を入れ替える | 今日…

Java と JavaScript で配列やリストや連想配列 (マップ) に値があるか調べる記法の比較

スッキリわかるJava入門第2版 [ 中山清喬 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格: 2,808円 TL; DR オブジェクトに対して、指定の値が存在すれば true を返してくれるようなメソッド類を調べた。 Object Java…

Java の import しなくても良い理由がイマイチ分かってなかった

Java を会社の新人研修で勉強した時に疑問に思って、講師に聞いてみたら「確かに不思議ですね、持ち帰り調べてみます」と言われて、後日答えを聞いたのに細かいことを忘れてしまってまた気になってるヤツ。 例えば、以下のようなコード。Mather と Pattern …

PreparedStatement を close しないとカーソルが close されない?:PreparedStatement と ResultSet の関係

前回の続き。 neos21.hatenablog.com Java プログラムで PreparedStatement を使って SQL を発行した時も、Oracle DB 側では内部的にカーソルオブジェクトが生成されていることは分かった。 ではどうして、「ORA-01000 最大オープン・カーソル数を超えました…

PreparedStatement を close しないとカーソルが close されない?:まずは PreparedStatement とカーソルをおさらい

Oracle DB に DBUtils を使う Java プログラムから接続していて、とある処理をさせていたら「ORA-01000 最大オープン・カーソル数を超えました」というエラーが出た。 Oracleを使用していると「ORA-01000 最大オープン・カーソル数を超えました」と表示され…

Java:for 文の構文をもっかい考える

Java やりたいこと逆引き事典(日経BP Next ICT選書)【電子書籍】[ 中島省吾 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > プログラミング > Javaショップ: 楽天Kobo電子書籍ストア価格: 270円 Java における単純な for 文の構文をもっかいおさらい…

Java:ブレースでローカルブロックが作れる

イマイチ良い単語が出てこなくてタイトルがよくわからない感じ。 「ニホンノエスイー」にありがちな手続き型の Java コードを見てたら珍しいモノを見付けた。 public hogeMethod(String str1, String str2) { // 前処理 { // 1つ目の引数の操作 String str =…

Java・JavaScript でコメントアウトするコードを切り替える小技

どこで見たネタだか忘れたけど、ときどき便利なので紹介。 コード A とコード B のどちらかの行をコメントアウトさせて、2つの行の処理を交互に見ながら開発をしたいような場合に、Java の単一行コメントと複数行コメントの書式を利用してその切り替えを簡単…

Java の List の初期値を1行で設定する方法

新・明解Java入門 [ 柴田望洋 ]ジャンル: 本・雑誌・コミック > PC・システム開発 > その他ショップ: 楽天ブックス価格: 2,916円 Java における List で、変数の宣言時に初期値を一緒に入れる方法がないかな~と思って探してた。 普通に書こうとするとこうな…

Java で特定の文字と文字の間の文字列を取り出す

Java のコードで、Oracle の接続文字列 jdbc:oracle:thin:@127.0.0.1:1521:oracle からホスト部分 127.0.0.1 を取得したい。 // 接続先 URL : 実際はこれを引数に受け取るイメージ String str = "jdbc:oracle:thin:@127.0.0.1:1521:oracle"; final String _p…

フレームワークの都合に引っ張られて DB の型を全て VARCHAR にしたりしない

Struts1 系は、画面とのデータのやり取りには基本的に文字列を使用するため、画面上の入力値を受け取る Form Bean のプロパティは String にしておくことが通例。 例えば、1つのチェックボックスで何かの On/Off を表現するような項目が画面にある場合。 Str…