기록용~!
암튼 초간단 서버 구축 클래스가 있었네요.
import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import com.sun.net.httpserver.HttpServer; public class Test { public static void main(String[] args) throws IOException { InetSocketAddress addr = new InetSocketAddress(9000); HttpServer server = HttpServer.create(addr, 0); server.createContext("/", new MyHandler()); server.setExecutor(Executors.newCachedThreadPool()); server.start(); } }
해당포트로 HttpServer.create로 서버 생성하고, 핸들러클래스를 파라메터로 넣으면 저기 핸들러에서 다 처리를 하는 듯하네요.
MyHandler.java
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; public class MyHandler implements HttpHandler { private String root = "D:/root/"; @Override public void handle(HttpExchange exchange) throws IOException { String requestMethod = exchange.getRequestMethod(); if (requestMethod.equalsIgnoreCase("GET")){ Headers responseHeaders = exchange.getResponseHeaders(); responseHeaders.set("Content-Type", "text/html"); URI uri = exchange.getRequestURI(); System.out.println(uri.getPath()); OutputStream responseBody = exchange.getResponseBody(); BufferedReader br = new BufferedReader(new FileReader(root + uri.getPath())); exchange.sendResponseHeaders(200, 0); int b = 0; while((b = br.read()) != -1){ responseBody.write(b); } responseBody.close(); } } }get 요청인 경우 해당 path에서 파일을 찾아서 그냥 뿌려주는 게 다임 ㅇㅇ
지금셋팅은 http://localhost:9000/index.html을 요청하면 d:/root/index.html 파일을 읽어서 뿌려줌 ㅇㅇ
ps. 생각해보니 파일을 주고받으려고 찾고 있었는데, ftp서버를 찾았어야 했는데......젠장......ㅠㅠ