LastaFluteというforkしたようなプロダクトがあるって
LastaFlute http://dbflute.seasar.org/ja/lastaflute/
SAFluteを、2014年末に調査しているころには見かけなかったような・・・。
でも
SAStrutsというか、Struts使わないことが多くなってるんだよな。
JavaScriptのMVMM(MVC)が増えて、jsonやXMLばかりになってしまったんだよな(SAStrutsでjsonが使えないというわけではない)。
ただ、jspは比較的処理が速いよ。
サーバ側は、MVCで SpringMVCやJavaEEでのJAX-RSが多い。
- LastaFluteでもJSONばりばりあるらしい
- FW再考 LastaFlute(JSON API) + AngularJs
おぉ、っと思った。
・タイプセーフ
・非同期
・認証
・Cookieを使った自動認証
・CsrfToken
SpringMVC+SpringSecurityやStrutsのtokenにも相当しているか?
また、JavaEEの非同期(@Asynchronous)相当もあるのかな?
-
-
-
- スライドの 23/36 にある
-
-
json主流だよね、階層や配列は、連想配列のようにkey-Valueのペアであったりわかりやすいね。
Form(フォーム&クエリパラメータ)はあまり使わず、JSONかURLパラメータを使っています
JSONのほうが階層や配列などを表しやすいためです
ネストしているのもわかりやすい。表の中に表とか。
- JAX-RS参考)
<servlet> <servlet-name>Jersey</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>jp.co.sitename.rest</param-value> </init-param> <init-param> <param-name>javaEncoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping>
-
-
-
- js
-
-
AjaxでのリクエストURL var baseURL= "/WebContextName/api"; var url = baseURL + "/foo/go"; var test = xhr(url); ・・・ function xhr(url,param){ var response; $.ajax({ type: 'post', url: url, async: false, contentType: "application/json", data: toJSON(param), success : function(data, dataType) { response = data;}, error: function(XMLHttpRequest, status, errorThrown){ errHandle(errorThrown); }, }); return response; } // JSONにKOオブジェクトを変換 function toJSON( data ) { jsのOSSライブラリで、jsonに変換 } function errHandle(){ }
@Path("/foo") @Stateless public class FooResource { /** EJB */ @EJB private Foo ejb; /** */ @POST @Path("/go") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public FooBean init(final FooBean param , @Context final HttpServletRequest request){ return ejb.go(); } } @Local public interface Foo { FooBean show(FooBean param); } @Stateless public class FooEjb implements Foo { @Override public FooBean show(FooBean paramn) { FooBean result = new FooBean(); return result; } }