scalaでservlet3.0を動かす

scalaで簡単にWebアプリを作る方法を考えてて、とりあえずservlet3.0で簡単に動かしてみた。
scalaで書くと以下のような感じ。

package code

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(Array("/test"))
class ScalaServlet extends HttpServlet {
	override def doGet(req: HttpServletRequest,
			res: HttpServletResponse) = {
	    res.getWriter().print(new Date());
	}
}

@WebServlet(Array("/test"))のようにArrayを書く必要がある点に注意が必要。
普段は、intellijを使っているけど、最近出たeclipseScala IDE 2.0.0-beta1(http://download.scala-ide.org/)を使ってみた。

うーん。確かに動くけど、servletを生で使うのは微妙かも。
scalaであるメリットが活きてこなそう。ロジック書いてないってのもあるけど、java臭さしかない。
でもjava部分を隠すようなラップをしてあげるだけで、結構いい感じになるかも。
例えば、req.getParameter("aaa")でOption型返すようにするとか。リストの戻り値をscalaのListにするとか。

一番の収穫は、scalaでWebだとliftとかplayを使わなくてはいけないみたいな固定観念があったけど、
意外と既存のjavaでもいけるかもと考えが変わったのが良かった。

次はJPAでも試してみるか。