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を使っているけど、最近出たeclipseのScala 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でも試してみるか。