Java6での新機能、軽量HTTPサーバを試す

Javaも1.4と呼ばれていたときから5に一気にバージョンアップして
その後6になってしばらくたちますね。
私が初めてさわったのは1.3でしたけれども、だいぶ機能が追加されています。
バージョン5の新機能も実はすべて知らないのですが・・・
Ver5.で一番よく使ってるのはやはり総称型ですかね。
拡張for文も今度勉強しようと思いますが、今回はVer6.の話。
軽量HTTPサーバ
Javaのプログラムでサーバの仕事を簡単にさせてくれる機能が追加されたみたい。
どれどれ、いかにして使うのか試してみよう。

package parabola;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class HttpServerTest {
public static void main(String[] arguments) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/webapp/", new HelloHttpHandler());
server.start();
}
private static class HelloHttpHandler implements HttpHandler {
public void handle(HttpExchange exchange) throws IOException {
StringBuffer buffer = new StringBuffer();
buffer.append("<html>");
buffer.append("<head>");
buffer.append("<title>Hello</title>");
buffer.append("</head>");
buffer.append("<body>");
buffer.append("<h1>Hello</h1>");
buffer.append("</body>");
buffer.append("</html>");
byte[] response = buffer.toString().getBytes();
exchange.sendResponseHeaders(200, response.length);
OutputStream output = exchange.getResponseBody();
output.write(response);
output.close();
}
}
}
実に短いです。
仕組み的には、仮想的なサーバを表す抽象クラスなんでしょうね。
HttpServerというクラスがね。
それに対してCreateで実際に作成していろいろ設定するとサーバー代わりの動作をすると。
実際にウィンドウズのファイアフォールから警告が出るので、実際のサーバーと同じような仕事でしょう。
これで最初に指定した/webappというやつにアクセスすると
確かにHelloと表示されます。
アクセス先 http://localhost:8080/webapp/
あー、実におもしろいね。
プログラムは楽しんでやるのが一番!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です