SAStruts/mobylet

SAStruts/mobylet

バージョンと製造年月日

  • mobylet 1.0.5
  • 2010-12-19

mobyletとは

サーバサイドJavaとかで使えるガラケー向けの便利機能集

インストール

本体のダウンロードと設置

まず、本家から主要なファイルをダウンロードする。 mobylet(モビレット) | 過去のダウンロード | 携帯Webアプリケーションを開発するためのJavaオープンソースフレームワーク

今回はバージョン1.0.5を使う。なんだか1.0.6はJSPのtiles周りの処理に問題があるのかちゃんと動かなかったので・・・とにかく1.0.5の以下5つのファイルをダウンロードする。

mobylet-charset携帯の絵文字などを処理する文字コードライブラリ
mobylet-coremobyletのコアとなるライブラリ
mobylet-taglibsmobyletの便利なtaglibを利用するためのライブラリ
mobylet-mail絵文字入りメール、デコメール等を送るためのライブラリ
mobylet-s2extensionS2のフレームワークに適用するための拡張ライブラリ

そして以下のようなライブラリ置き場に設置

/hoge/src/main/webapp/WEB-INF/lib

Eclipseとか使っているのなら、プロジェクトのプロパティーのJavaビルドパスからJarの追加で5つを追加しておく

これで設置完了

フィルターとして追加

mobyletにはフィルターが実装されていて、これによりデバイス判定や、出力の変換を行ってくれる。 これをweb.xmlに記述することで機能させる。

自分はこうしてみた、mobyletfilterの記述は処理のかなり早い段階で行わないといけないようなので前のほうに書いてある。 これは環境によりけりなのでどうともいえないがまず一番先頭に書いてみて調整してみるといいと思う。

もうひとつポイントはSAStrutsの場合、それ向けの専用のS2MobyletFilterというフィルタがあるのでそっちを使うといいみたい。

通常普通にSAStrutsのプロジェクトを作るとencodingfilterがもうすでに設定されていると思うがmobyletfilterが肩代わりしてくれるのでこいつは設定から外す。

mobyletfilterへのURLのマッピングを記述する。特定のURLだけ処理を効かせたい場合はここに記述するとよいだろう。

<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
 
    <context-param>
        <param-name>sastruts.VIEW_PREFIX</param-name>
        <param-value>/WEB-INF/view</param-value>
    </context-param>
 
 
    <filter>
        <filter-name>mobyletfilter</filter-name>
        <filter-class>org.seasar.mobylet.http.S2MobyletFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <!-- 以下省略 -->
    <!-- 
    <filter>
        <filter-name>encodingfilter</filter-name>
        <filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    -->
    <filter-mapping>
        <filter-name>mobyletfilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

設定ファイルの設置

mobyletは設定なしでもデフォルトである程度それっぽく動作するのだが、設定ファイルを設置して挙動を変更することができる。まったく指定しないということは無いので設定デフォルトでいいから設置しておこう

ファイルはこの位置に設置する

/hoge/src/main/resources/mobylet.xml

内容はこんな感じにしてみた。throughの項目でotherが指定されているのは、主要3キャリア以外が来た場合はmobyletの処理を通さないことを意味している。

<?xml version="1.0" encoding="UTF-8"?>
<mobylet>
    <initializers>
        <chain>org.mobylet.core.initializer.impl.MobyletInitializerImpl</chain>
        <!--
        <chain>org.mobylet.mail.initializer.MobyletMailInitializer</chain>
        -->
    </initializers>
    <through>
        <carrier>OTHER</carrier>
        <!--
        <carrier>DOCOMO</carrier>
        <carrier>AU</carrier>
        <carrier>SOFTBANK</carrier>
        -->
    </through>
    <default>
        <contentType>XHTML</contentType>
    </default>
    <!--
    -->
    <device>
        <basedir>device/</basedir>
    </device>
    <emoji>
        <basedir>emoji/</basedir>
        <!--
        <imagePath>/images/emoji/</imagePath>
        -->
    </emoji>
    <!--
    <secureGateway>NONE</secureGateway>
    -->
    <!--
    <cssExpand>true</cssExpand>
    -->
    <!--
    <proxy>
        <host>proxy.mobylet.org</host>
        <port>8080</port>
    </proxy>
     -->
</mobylet>

デバイス判定用のファイルの設置

株式会社バリューエンジンから端末ごとの情報がダウンロードできるようになっているので、こいつをダウンロードする。

株式会社バリューエンジン|ケータイ端末プロファイルダウンロード

ダウンロードして解凍。CSVファイルが3つでてくるのでそのファイル名の日付部分を除去する。そしてdeviceディレクトリ(無いなら作る)にコピーする。

/hoge/src/main/resources/device/

MobyletオブジェクトをDIコンテナからインジェクションしてもらう

モバイルの各種情報をMobyletオブジェクトから取得できる。こいつをDIコンテナからインジェクションしてもらうために

app.dicon

ファイルに↓こう書いておくと

<include path="mobylet.dicon" />

Actionでこのように書くことで自動的にインジェクションされる。

public class IndexAction {
    @Resource
    protected Mobylet mobylet;

IP制限をかける

設定ファイルのmobylet.xmlに

<secureGateway>SECURE_CARRIER</secureGateway>

を追記する。これはキャリアのIPアドレスリスト(mobyletに内臓されている)とリクエスト元のIPアドレスを比較して一致しなければPCからのアクセスとみなすという記述。

これだと開発がやりにくいので

/hoge/src/main/resources/ip

ディレクトリ以下(無ければ作る)に

EXTENSION.txt

を作って中に無条件で許可するIPアドレスを記述する。こんな感じでローカルを指定すればいいだろ。

127.0.0.1

PC版とモバイル版で同じURLを使う

java/sastruts/mobylet.txt · 最終更新: 2017-09-26 18:34 by ore