Запись HTML-файла обратно в браузер: Java

#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 для получения более подробной информации.