Программный вызов парсера JSP - PullRequest
3 голосов
/ 09 февраля 2011

Я хотел бы вызвать парсер JSP программно. Это означает, что я хочу иметь возможность в Java «запускать» страницу jsp и получать ее вывод, не отправляя ее обратно клиенту (на самом деле я хочу сохранить вывод в файл). Я не хочу пересылать запрос на страницу JSP. Я хочу сделать это на нескольких страницах JSP подряд.

Каков наилучший способ сделать это?

Я нашел этот вопрос , но BalusC действительно не отвечает на вопрос напрямую.

Если вам интересно, мне нужно сделать это потому, что я хочу «предварительно скомпилировать» JSP для использования на других платформах, кроме контейнера сервлетов Java.

EDIT

Мне нужен не файл .class, а вывод HTML. На самом деле, это будет статично после генерации, но у меня есть несколько пользовательских тегов jsp, и я хочу использовать анализатор JSP для их расширения.

Ответы [ 4 ]

1 голос
/ 09 февраля 2011

Лучший способ получить вывод html со страницы jsp - это развернуть его на реальном веб-сервере, а затем вызвать страницу и сохранить обработанный вывод.

Если вы хотите автоматизировать какую-то часть этого, вы можете захотеть использовать инструмент тестирования, который работает через реальный интерфейс, такой как Selenium или который эмулирует браузер, такой как HttpUnit .

Но это гораздо больше, чем просто вызов компилятора JSP.

1 голос
/ 30 мая 2011

Возможно, было бы более практично использовать шаблоны шаблонов, такие как http://freemarker.sourceforge.net/ или http://velocity.apache.org/

Freemarker даже поддерживает JSP Taglibs: http://freemarker.sourceforge.net/features.html

1 голос
/ 09 февраля 2011

Я не уверен, что понимаю смысл всего этого.

JSP анализируются и прекомпилируются в .class файлы.Это Java-сервлеты на тот момент.Вам нужен механизм сервлетов для их выполнения.

Если вы намереваетесь захватить сгенерированный HTTP-ответ как «предварительно скомпилированный» ответ, это может означать, что динамического содержимого нет, и ответ будет одинаковым при каждой отправкеэтот конкретный запрос.Если это так, то у вас есть статический HTML.

Если я прав, это может показаться плохим способом создания такой вещи.

Если вы хотите предварительно скомпилировать JSP в файлы .class, проблема в том, что разные JavaСерверы приложений EE используют разные механизмы предварительной компиляции JSP.Вы не можете предварительно скомпилировать JSP с помощью Tomcat и использовать их в WebLogic.

0 голосов
/ 16 июля 2012

Ваш JSP генерируется динамически.Если это так, то вы попадаете в потенциально невыгодную ситуацию, когда ваш JSP будет компилироваться снова и снова, что приводит к проблемам с производительностью.

Однако, если у вас может быть один большой JSP со всеми правилами, которые вам нужно подготовитьваш дисплей, вы можете использовать HttpClient для вызова вашего собственного JSP, и это вернет HTML.Это гарантирует, что вы не зависите от сервера приложений.Если вы используете JSP Parser, вы будете зависеть от поставщика.

Но если ваш JSP создается динамически, вам следует рассмотреть варианты, в которых ваш HTML может быть сгенерирован на стороне Java.Но если это связано с созданием HTML на основе правил, вам лучше создать его на Java.Для этого вы можете использовать библиотеку Apache Jakarta ECS.

И да, JSP не предназначены для этой цели.

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