プログラマメモ2 - programmer no memo2

gspとgroovletの連携方法その1 2007/08/29

groovletとgspがとてもいい感じです。
groovletとgspの連携方法です。

シナリオ

groovletを呼び出して、処理を行いその結果を、gspを利用して表示してください。



web.xmlの設定は以下の感じ
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<display-name>groooovy</display-name>

<servlet>
<servlet-name>Groovy</servlet-name>
<servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>GroovyTemplate</servlet-name>
<servlet-class>groovy.servlet.TemplateServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Groovy</servlet-name>
<url-pattern>*.groovy</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>GroovyTemplate</servlet-name>
<url-pattern>*.gsp</url-pattern>
</servlet-mapping>

</web-app>


まず、f.groovyというgroovletをよびだして、内部で何かしら処理を行います。
そして、その何かしらの処理結果をrequestに入れて、gspにフォワードします。

f.groovyです。
request.p_p=request.getParameter('o_o')

dispatcher = request.getRequestDispatcher('aaa.gsp')
dispatcher.forward(request, response)


何をしているかといいますと、HTTPのgetで、o_oというパラメータを受け取って、それをrequestにp_pという名前でつめています。

このrequest.xxxと直でプロパティを指定、宣言できるのは、やはりすごいなと思います。
あのまどろっこしいgetter,setterから解放されるだけでも、groovyを使いたくなってしまいます(笑)。
※もちろんgetter,setterのよさはありますが、必ずしも用意しなければいけないものではないはずです。getter,setterの起源って何でしたっけ?カプセル化のためだけ?

次にディスパッチャーを取得して、最後にforwardの実行ですね。
このディスパッチャーの処理を一行ですませればいいなと思います。

最後に、フォワードされた先のGSPです。
<html><head>
<title></title>
</head>
<body>
<% println "${request.p_p}" %>
</body>
</html>


あとgroovyを使うなら、もっと軽やかに変数名をつけたいところですかねー。
javaを使う場合は、IDEなしではコーディングしたくない(できない(笑))ですが、groovyだったらちょこっとテキストエディターを開いてパパパパっと書いてしまいたいですねー。

: