2012年10月6日土曜日

webbitを使ってみた

相変わらずドラクエ廃人のみけです。

とうとう、ハッスルダンスを覚えました。


簡単なwebサーバー


僕はこれまで簡易なwebサーバーを使う時に

Jettyをよく使っていました。


ただ、まあなんだかんだでコピペで使いまわしているだけですが…


Nettyが流行りなようなので、

Nettyを覚えたいのですが、

廃人なので覚えている隙がない…


そこでwebbitですよ!


Netty + JavaのHTTPサーバー


Nettyで簡易なHTTPサーバーを作ろうと、

「Netty + Web + server」とか、

「Netty + HTTP」で検索すると、

大抵、 Netty + Scalaの組み合わせ事例がほとんどで、

Scalaを全く知らない僕には辛いとこでした。


そこで、webbitですよ!


そこでwebbitですよ!


というわけで、webbitが登場するわけです。

Maven、Gradle、Grapesでの利用方法はこちらからどうぞ。


早速書いてみた


というわけでサーバーを早速書いてみました。

@Grab ('org.webbitserver:webbit:0.4.14')
import org.webbitserver.*
import org.webbitserver.netty.*
import org.webbitserver.handler.*
import java.util.concurrent.*
WebServers.metaClass.static.createWebServer = {InetSocketAddress address ->
return new NettyWebServer(
Executors.newSingleThreadScheduledExecutor(),
address,
new URI("http://${address.hostName}${address.port == 80? '' : ':' + address.port}")
)
}
def server = WebServers.createWebServer(new InetSocketAddress('localhost', 8972))
.add(new StaticFileHandler('./public'))
.start()
.get()
println server.uri
view raw webbit.groovy hosted with ❤ by GitHub


すごい単純ですね。


さて、


前回ののエントリーでは、

Jade4Jを扱いました。

そして今回のエントリーはwebbitです。

そうすると、次に考えられるのが、

このふたつのライブラリーを組み合わせた、

簡易的なWebアプリケーションになります。


こんな感じでDSLが書ければいいなあと思っています。

server 3000
public './public'
jade '/sample' : [
{
!!! 5
html
head
title= pageName
body
ul#students
for student in students
li #{student.firstName} #{student.lastName} grade #{student.grade}
p= students.size()
},
{
[
pageName : 'sample',
students : Students.findStudentsByIdBetween(100, 200)
]
}
]