妄想その4


ちょっと時間は空いてしまったけど、妄想その4.
今回はREST風なURLで指定されたパラメータを取るの巻。

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" errorPage="/error/debug.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Var</title>
</head>
<body>
<h1>Hello ${var}!</h1>
</body>
</html>


たとえばこんなjspがあるとして、

ttp://localhost:8080/samples/var/hello


ってURLにアクセスすると、URLに埋め込まれた断片がとれるって話。
もちろんJava側で受け取るって明記しないとだめ。

URLの断片は@Pageに書くので、そこで簡易EL式を記述。
んで、しつこく言うけどPageクラスのAction実行メソッドは引数で受け取るモデルなので、
その値を受け取れるように@Varで明記する。
前回エントリ書いた@Indexとほぼ同じ。


これで、ttp://localhost:8080/samples/var/helloってアクセスしたときのhelloっていう値が
引数としてインジェクトされる。

@RequestScope
@Page("var/{aaa}")
public class VarPage {

	@Default
	public Navigation index(@Var("aaa") String str, Context context) {
		System.out.println("index() called");
		context.getRequest().setAttribute("var", str);
		return Forward.to("/jsp/var.jsp");
	}

}

まあこんな感じでRESTでの引数を受け取れる、そしたらブックマーカブルだよねっと。
ただし、セキュリティ考えなくちゃいけないけど、それはいずれ。または自前で組み込んでもらうほうがいいかもしれない。
それよか、「Webにつながる」っていう一点だけをここしばらく考えてます。


たぶん次はAjaxな妄想な予定。たぶん。