2015-01-26 6 views
2

У меня есть текстовые шаблоны, хранящиеся в базе данных. Для обработки этих текстов нам нужно использовать механизм шаблонов. Мы сначала подумали о скорости/фримакере/тимелеафе для обработки этих текстов. Однако я подумал (но мог ошибаться), что можно было бы взаимодействовать с компилятором JSP-сервера приложений. Я бы предпочел использовать компилятор JSP, а не импортировать новую кучу фляг.Взаимодействие с JSP-компилятором

Благодаря

+0

возможно дубликат [JSP компиляции в строке или в ByteArray памяти с Tomcat/Websphere] (HTTP: // stackoverflow.com/questions/1189094/jsp-compilation-to-string-or-in-memory-bytearray-with-tomcat-websphere) –

ответ

1

AFAIK это разные понятия и работают по-разному, так что они не будут напрямую взаимодействовать:

  • JSP обрабатывается компилятором JSP для генерации кода Java для сервлета, который компилируется (во время выполнения) в файле .class. Он позже используется контейнером сервлетов как любой другой сервлет. Вы можете включить любой код Java в JSP с скриптлетами (даже если она в настоящее время рассматриваются как плохая практика)

  • шаблонных движков (Velocity/Freemaker/Thymeleaf) принять шаблон и только позволяет заменить переменные заполнители со значениями во время выполнения для создания текста. Конечно, они также позволяют проводить тесты и циклы, но никакой источник java и объект класса никогда не генерируются. В веб-приложении они используют один единственный сервлет, который принимает шаблон и заменяемые значения и генерирует текст, который будет отправлен в ответ.

Но, конечно же, как JSP может содержать произвольный код Java, можно назвать двигатель шаблона из JSP, но я действительно не могу себе представить надлежащее использование случай.

Редактировать на комментарий:

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

  • создать заглушки, реализующие ServletResponse где getOutputStream() и getWriter() методы конца в виде строки.
  • вынуждает ServletContainer генерировать источник java и файл класса - или это можно сделать во время компиляции (я не знаю, как это сделать, но я уверен, что это можно сделать)
  • во время выполнения включают сгенерированный сервлет с заглушкой ответа для генерации выходной строки.

Но будьте осторожны, даже если вам это удастся, это приведет к едва поддерживаемому коду, сильно связанному с контейнером сервлетов, или с помощью специальных шагов (JSP -> java) во время сборки. Как уже говорилось: не делайте этого.

Я только что пришел к JSP compilation to string or in memory bytearray with Tomcat/Websphere, похоже, ваш вопрос является дубликатом, что один ...

+0

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

+0

@ benjamin.d JSP - это не ** механизм шаблонов, он заканчивается сервлетом, который записывает свой вывод в объект 'ServletResponse'. Но см. Выше edit –

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

  • Нет связанных вопросов^_^