#java #file #browser
#java #файл #браузер
Вопрос:
Я прочитал запрос на HTML-документ из своего браузера, проанализировал файл из запроса, нашел указанный файл, и теперь все, что осталось, это отправить содержимое HTML-файла обратно в браузер. Кажется, что то, что я сейчас делаю, должно работать просто отлично, однако содержимое HTML-файла не принимается браузером.
public void sendResponse(File resource){
System.out.println(resource.getAbsolutePath());
Scanner fileReader;
try {
fileReader = new Scanner(resource);
while(fileReader.hasNext()){
socketWriter.println(fileReader.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println("File not found!");
e.printStackTrace();
}
}
Что я делаю неправильно? Исключение не генерируется, но браузер просто продолжает загружаться.
Комментарии:
1. сценарий неясен. Какая ваша программа — апплет, сервлет, автономная?
2. вы промываете / закрываете розетку?
3. Плюс закрытие / и т.д., Вы возвращаете правильные заголовки ответа?
Ответ №1:
это говорит о том, что ваш код застрял в бесконечном цикле. Проверьте свой цикл while. nextLine() не перемещает указатель файла вперед?
Ответ №2:
Трудно сказать, не зная, что это за тип socketWriter
, но я полагаю, вам нужно будет закрыть соединение. Найдите close()
метод или что-то похожее на socketWriter
и вызовите его, когда закончите.
Ответ №3:
Из вашего кода не видно, куда идет socketWriter. Низкоуровневые операции, такие как сокет, лучше всего обрабатываются самим веб-сервером. Обычно, когда нам нужно записать ответ обратно в браузер, мы используем объект HttpServletResponse, который доступен в методе GoGet / doPost вашего сервлета. Обратитесь к javadocs для получения более подробной информации.