servlet+java+javascriptでwebアプリケーション内のファイルを扱ってみる。

OYPosted by

どうも。最近ちょっと忙しめなOYです。

急ぎなので、パパパっと本題へ。

GoogleのOAuthでは去年からセキュリティ強化として承認プロセスを経てない画面からのリダイレクトに対して、警告画面を出すようになりました。承認プロセスの申請フォームも必須項目がなかなか厳密で、内部的に使ってるようなアプリでは警告画面そのものを消すということはできないみたいです。

また、その警告画面での操作がなかなか分かりにくいため、登録前にヘルプ画像(操作手順)をスライドで出してから画面遷移ボタンを配置する必要があるのですが、この画像も警告画面の内容が変化すると差し替えなくてはならないため、再起動せずに差し替えられるような作りに、かつデータベースのBLOBを使わずに済む方法を模索してみました。(こんなもののためにテーブル追加はさすがに嫌なので)

準備:
画像ファイルを「ファイル名+番号.拡張子」で必要分だけ/webapp/image/hoge配下へ配置する。

Java:

HttpServletRequestからスタートして、getSession().getServletContext().getRealPath(”/コンテキストパス/image/hoge”);

上記でファイルシステム上の絶対パスが取得できるので、そのままディレクトリの中身を取得し、それらの相対パスを採番順に配列化して返却する。ファイル名や連番取得は正規表現抽出などでうまくやる。また、コンテキストパスはHttpServletRequestのgetContextPathで取得できる。

javascript:

ajax通信で上のjava処理から相対パスリストを受け取り、for(path of list) -> $(‘スライド要素’).append(“<img src=”+path+”>”);で画面出力する。

 

サンプルコードは諸事情で提供できませんが、概要が分かれば実装はそこまで難しくないです。ちなみにスライド画面を作るならslick.jsというライブラリがおすすめです。

書きなぐりの上、推敲もしてない内容で申し訳ありませんが以上です。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA