Я строю сервер Java, и все работает так, как ожидалось до сих пор. Я могу обслуживать статическую html-страницу, используя два метода, которые я написал: body и header. Теперь я пытаюсь написать новый метод, называемый bodywithQueryString.Создание Java-сервера, и я не могу заставить мою страницу останавливать загрузку (используя PrintWriter и Buffered Reader)
Проблема: Это почти работает, но после того, как страница загружена, загрузка не остановится. Он просто загружает и загружает. Это не происходит с моими статическими страницами.
Единственное отличие между старым методом и новым методом bodyWithQueryString() заключается в том, что в новом методе я использую буферизованный считыватель и устройство для печати. Для меня это новые функции, поэтому я предполагаю, что я не делаю это правильно.
Вот как мой новый метод должен функционировать: Я хочу передать свой маршрут и (queryarray строку запроса) к методу bodyWithQueryString. Я хочу, чтобы метод считывал файл (с маршрута) в выходной поток байта, выполнял замену по паре ключей/значений в строке запроса при чтении и, наконец, возвращал байты. Главный метод getResponse() затем отправит html в браузер.
Вот мой код:
public void getResponse() throws Exception {
String[] routeParts = parseRoute(route); //break apart route and querystring
File theFile = new File(routeParts[0]);
if (theFile.canRead()) {
out.write(header(twoHundredStatusCode, routeParts[0], contentType(routeParts[0])));
if (routeParts.length > 1) { //there must be a querystring
String[] queryStringArray = parseQueryString(routeParts[1]); //break apart querystring
out.write(bodyWithQueryString(routeParts[0], queryStringArray)); //use new body method
}
else out.write(body(routeParts[0])); //use original body method
out.flush();
private byte[] bodyWithQueryString(String route, String[] queryArray)
throws Exception {
BufferedReader reader = new BufferedReader(new FileReader(route));
ByteArrayOutputStream fileOut = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(fileOut);
String line;
while ((line = reader.readLine()) != null) writer.println(line.replaceAll(queryArray[0] ,queryArray[1]));
writer.flush();
writer.close();
reader.close();
return fileOut.toByteArray();
}
Этот код не компилируется. Вы отредактировали какой-то код. – Raedwald
Спасибо @ Raedwald. Вы писали. Я пытался только опубликовать соответствующий код, чтобы не тратить время других людей. Теперь я понимаю, что я не писал достаточно. – Kelly