Загрузка страниц JSP из пользовательских источников - PullRequest
3 голосов
/ 12 октября 2008

Можно ли выполнить страницу JSP и захватить ее вывод за пределы веб-приложения? В частности, в моем случае обычное веб-приложение все еще существует, но оно загружает страницы JSP не из пути к классам, а из произвольного источника. Похоже, я не могу просто получить RequestDispatcher и указать его на файл JSP на диске.

Ответы [ 2 ]

3 голосов
/ 12 октября 2008

Я думаю, что вам лучше с таким движком, как скорость. Это обеспечивает чистую инфраструктуру для динамического контента, которая явно отличается от jsp / servlet, который вы запрашиваете ранее.

Тем не менее я видел приложения, которые копируют jsps в развернутый каталог, чтобы контейнер мог их забрать и перевести. Если вы сделаете это, обратите внимание, что это ограничивает ваши будущие возможности:

  • вы полагаетесь на то, что ваше приложение будет "взорвано" - например, он не может работать непосредственно из архива WAR (это может ограничить ваши возможности развертывания)
  • Создание jsps для редактирования во время выполнения может открыть дыры в безопасности, если вы не отключите скриптлеты (также если вы отключите, но это будет несколько сложнее ...). Отключение скриптлетов запрещает настоящий код Java в jsps, тогда вы ограничены библиотеками тегов.
  • Вам понадобится Java-компилятор, доступный во время выполнения, который вы, возможно, не захотите иметь в производственных системах - например, вы не можете предварительно скомпилировать ваш jsps перед развертыванием. Кроме того, вы платите обычный штраф за перевод jsp во время выполнения в вашей продуктивной системе.

Настройка web.xml для отключения сценариев:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
</jsp-config>

Я надеюсь, что этот фрагмент web.xml прошел, предварительный просмотр показывал его неправильно ...

Обновление : Пытался правильно отобразить фрагмент XML.

0 голосов
/ 12 октября 2008

Поправьте меня, если я ошибаюсь, но я думаю, вы имеете в виду, что хотите захватить HTML ... а не JSP. JSP обрабатывается (в файл JAVA) на сервлет-движке (сервер веб-приложений) и после того, как HTML-форматируется и подается запросчику через веб-сервер (не то же самое, что сервер веб-приложения). Вы не можете заставить RequestDispatcher работать на прямом JSP с диска, потому что он еще не был обработан сервером веб-приложений. Теперь можно получить выходные данные JSP (в HTML), но я никогда раньше этого не делал. Могут быть некоторые хитрые API-интерфейсы, которые более понятны, чем я могу адресовать, но HTTP обычно делается на 80-м порту, так что я думаю, что можно было бы читать / писать на 80-м порту на сокете TCPIP. Наверное, есть еще кое-что, что нужно сделать, но, по крайней мере, стоит начать с этого.
Извините, я не могу предоставить более подробную информацию, но, черт возьми ... это все теория для меня на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...