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

オレオレJava Webフレームワークを作ってみる。その3

始まりはここ。

今回は、ConfigとJSONレスポンスについて。

web.xml

web.xmlで'webappRoot'にWebアプリケーションのルートになるベースパッケージ名を指定します。

<filter>
    <filter-name>actionfilter</filter-name>
    <filter-class>org.selva2.webframework.ActionFilter</filter-class>
    <init-param>
        <param-name>webappRoot</param-name>
        <param-value>webapp</param-value>
    </init-param>
</filter>

あとは、JavaでのConfigになります。

ActionConfig.java

package webapp;

public class ActionConfig extends org.selva2.webframework.ActionConfig {
    public ActionConfig() {
        setEncoding("UTF-8"); // (1)
        setViewPrefix("/WEB-INF/view"); // (2)

        addIgnorePathRegex(".*\\.css"); // (3)
        addIgnorePathRegex(".*\\.js"); // (4)

        addActionPath("/hoge/{arg1}/{arg2}", webapp.action.AddAction.class); // (5)
    }
}

フレームワークの設定は、Javaで静的に設定できた方が良いと思っています。webappRootで指定したパッケージ配下に、org.selva2.webframework.ActionConfigを継承した ActionConfigクラスを作成します。

(1) リクエストの文字コードを指定しています。
(2) JSP等にフォワード、リダイレクトするときに省略されるパスになります。ActionUtil#forwardViewメソッドを使った場合、指定したパスが省略可能になります。
(3)(4) ActionFilterが無視するパスの正規表現を指定しています。上記では、拡張子css, jsを無視するように設定しています。
(5) サーブレットパスをカスタマイズしています。上記の場合、サーブレットパス'/hoge/1/2'は、'/add?arg1=1&arg2=2'と同じように扱えます。

JSONレスポンス

JSONでのレスポンス機能も実装しました。
ActionUtil#jsonメソッドでBeanやMapをJSONに変換します。

package webapp.action;

import static org.selva2.webframework.ActionUtil.json;

import java.util.HashMap;
import java.util.Map;

import org.selva2.webframework.ActionResult;
import org.selva2.webframework.annotation.Default;

public class JsonAction {

    @Default
    public ActionResult execute() {
        Map<String, String> m = new HashMap<String, String>();
        m.put("aaa", "1");
        m.put("bbb", "あああ");
        return json(m);
    }
}


以上