次のようなJavaのWebサーバーがあります。
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(80), 0);
server.createContext("/", new HomeHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
そして、ここにありますHomeHandler
:
class HomeHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
String filepath = "C:\\Public\\home.html";
String response = getPage(filepath);
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
最後に、関数は次のgetPage()
とおりです。
private static String getPage(String page){
String toret = "";
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(page));
while ((sCurrentLine = br.readLine()) != null) {
toret += sCurrentLine;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return toret;
}
しかし、ホームページがロードされると、そこに画像が含まれているため、ブラウザはサーバーに画像を要求する別のリクエストを作成します。同じことを行う画像用の同様のハンドラーを作成しました。引数 画像のファイルパス...
しかし、実際にブラウザで実行すると、画像は表示されません。しかし、新しいタブで画像だけを開くと、画像のサイズが正しくわかります(Google Chromeは私のブラウザで、今日の最新のものです)。