java从http服务器、filehandler中删除冗余代码
我已经在8080端口设置了我的Web服务器,目前只是本地主机,用于测试
public class WebServer {
static int port = 8080; //not the final port
static String ip = "127.0.0.1"; // not the final IP
public static void main(String[] args) throws IOException {
InetSocketAddress i = new InetSocketAddress(ip, port); //localhost - 127.0.0.1
HttpServer server = HttpServer.create(i, 0);
server.createContext("/tester", new testHandler("index.html"));
server.createContext("/startpage", new PagesHandler());
server.createContext("/online", new OnlineHandler());
server.createContext("/logfile", new LogFileHandler());
server.setExecutor(null);
server.start();
}
对于每个页面引用,我都有一个单独的处理程序,它基本上做相同的事情。 PagesHandler()的示例
static class PagesHandler implements HttpHandler {
String content = "public/";
@Override
public void handle(HttpExchange he) throws IOException {
File file = new File(content + "index.html");
byte[] bytesToSend = new byte[(int) file.length()];
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
bis.read(bytesToSend, 0, bytesToSend.length);
} catch (IOException ie) {
ie.printStackTrace();
}
he.sendResponseHeaders(200, bytesToSend.length);
try (OutputStream os = he.getResponseBody()) {
os.write(bytesToSend, 0, bytesToSend.length);
}
}
}
这使得我有很多冗余代码,我真的不认为有必要。 我的问题是。我猜有一种方法可以用文件名来解析处理程序,而不是用文件中的硬编码文件名
但是我该怎么做呢? 具有字符串参数作为文件名的处理程序的构造函数会这样做吗? 像这样
public pagesHandler(String fileName){
}
大体上是这样的:
server.createContext("/tester", new testHandler("index.html"));
如果没有,我将如何减少粗鲁的代码
共 (0) 个答案