オレオレ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); } }
以上