2010-10-06 2 views
0

Я пытаюсь отобразить динамические данные в jsp. для этого я вызываю java-метод внутри jsp, используя выражение jsp. этот метод java занимает много времени, но он возвращает некоторое значение. (Я не могу уменьшить время выполнения метода.) Но мой jsp показывает пустое. Может кто-нибудь объяснить, в чем причина и как решить. Этот код не написан мной, но мне нужно выяснить причину.не отображается jsp

мой код JSP выглядеть

display.jsp 

     ..... hello......start... 

     <%= obj.getDynamicData() %>  

     .....completed .... end  
+0

+1 к комментарию BalusC здесь. –

ответ

2

Это, вероятно, потому что вы (аb) с использованием JSP для выполнения какой-то сырой код Java. Когда исключение выбрасывается наполовину, отправляя выход JSP, остаток JSP больше не будет отправлен в браузер. Но веб-сервер больше не может изменить ответ на страницу с подробными сведениями об исключениях, и веб-браузер будет содержать полуобработанный HTML-вывод, который часто отображается как пустая страница.

Любое неперехваченное исключение обычно регистрируется в файле журнала сервера. Вам нужно копать в журналах сервера для исключения и stacktrace, чтобы вы могли исправить основную причину проблемы. Исключения содержат достойную информацию о причине проблемы.

Полуботинки HTML-страницы - это только неполная страница HTML, из-за которой веб-браузер не понимает, как правильно отображать его. Rightclick страницу в webbrowser и choos Просмотреть исходный код. Убедитесь, что это так, как ожидалось, при необходимости с помощью w3 validator.

Кроме того, это может стоить усилий, пытаясь использовать различные (лучшие) веб-браузеры, такие как Firefox и Chrome. MSIE6/7, как известно, задыхается, когда он получил чрезвычайно HTML <table>. Он имеет плохой механизм рендеринга таблицы.


Чтобы спасти себя от будущих неприятностей, как это, я предлагаю, чтобы переместить весь код Java из в класс сервлета, так что вы можете получить более дружелюбным (по крайней мере, это лучше, чем копание в лог-файлах сервера) страницы ошибки в случае исключения в коде Java. Смотрите также How to avoid Java code in JSP?

+0

Java-метод не бросает никаких исключений. и я могу получить возвращаемое значение метода. но я не рендеринг в jsp – Satya

+0

Симптомы говорят иначе. Вы все равно проверяли журналы сервера? Вы проверили полученный HTML-вывод в браузере? Обратите внимание, что исключения не обязательно входят в стандартный файл журнала. Проверьте файл (ы) журнала ошибок. Точное имя файла/местоположение зависит от используемого сервлетконтейнера. – BalusC

+0

@Satya, откуда вы знаете, что можете получить возвращаемое значение, если страница, на которой вы печатаете возвращаемое значение, не является рендерингом? –

1

На основании сделанных замечаний in BalusC's answer:

Когда я комментирую призыв к obj.getDynamicData(), страница JSP оказанными надлежащим образом.

Либо одна из двух вещей может происходить:

  1. obj.getDynamicData() бросает исключение, которое не перехватывается и обрабатывается
  2. Ваш контейнер сервлетов/сервер может быть сконфигурирован с какой-то «тайм-аут запроса ", который закрывает HTTP-соединение, если для обработки запроса требуется больше определенного времени, а obj.getDynamicData() так долго выполняет этот тайм-аут.

Есть ли у вас какой-либо журнал в вашем коде или JSP, который сообщает вам, что происходит на стороне сервера после завершения этого метода? Сильным намеком на то, что №2 будет, будет, если вы продолжите просмотр активности журнала из потока, обрабатывающего JSP-запрос (и obj.getDynamicData()) после того, как браузер перестает ждать запроса/получает пустую страницу.

И чтобы исключить простые вещи, вы уверены, что на самом деле сервер возвращает пустой ответ, а не то, что ваш браузер показывает пустую страницу, потому что сервер возвратил половину страницы HTML? Обязательно проверьте View Source, используйте такой инструмент, как Firebug, и/или сделайте тот же HTTP-запрос, который вы делаете в браузере из инструмента командной строки, например curl или wget.

Смежные вопросы