Хобрук: Ваш путь к мастерству в программировании

JSP вне веб-контейнера

Я начинаю проект, в котором будет много «файлов» (например, файлы веб-серверов .html или jsp). Например, каждый из этих файлов будет иметь «JSP», встроенный в файлы;

Привет ‹%="Джон Доу" %>

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

Я просмотрел Tomcats JSPServlet и зашел в тупик, поскольку не представляется возможным добраться до объекта Servlet из кода. Я также загрузил код Apache Jasper, который находится в Tomcat, чтобы выяснить, что делает JSPServlet, но это кажется долгим путем.

У кого-нибудь есть предложения или идеи?

Я знаю, что JSP ориентирован на Интернет, но это сработает для меня.

24.06.2010

  • просто добавить... Я хотел бы добавить функции, например, вызов страницы с параметрами abc.txt?name=John. Так что в основном jsp был бы идеальным. Просто я не могу заставить его работать автономно. У меня даже есть возможность запускать в веб-контейнере, но я не уверен, что это поможет. 25.06.2010

Ответы:


1

Чтобы ответить на мой собственный вопрос :)

Я создал классы, реализующие интерфейс Tomcat Connector, что позволило мне использовать все, что предлагает Tomcat, но с собственной точкой входа.

15.10.2011

2

Это долгий путь. Вы ищете способ генерировать файлы с использованием шаблона? Velocity или Freemarker могут быть лучшим маршрутом в этом случае. особенно если вы не хотите, чтобы генерировался html.

24.06.2010
  • Я посмотрел на них. Мне нужен шаблон, но в то же время мне нужно встроить фактический код Java для выполнения... так же, как скриптлеты JSP. 25.06.2010
  • velocity.apache.org/tools/releases/2.0 Вы также можете сделать это . 25.06.2010

  • 3

    Вы просто хотите получить результат? Самый простой способ — просто установить контейнер сервлетов, развернуть веб-приложение и использовать URL#openStream(), чтобы получить InputStream этого.

    InputStream response = new URL("http://localhost/context/page.jsp").openStream();
    
    24.06.2010
  • Я думал об этом. Честно говоря, мне не нравится этот метод, потому что я думаю, что это может привести к снижению производительности. Я также не понимаю, почему я не могу обойти сеть/петлю, стек tcp и т. д. 25.06.2010
  • Это не влияет на производительность, если веб-сервер установлен на том же компьютере. Обход невозможен, поскольку сервер прослушивает только сокет TCP/IP. 25.06.2010

  • 4

    Tomcat скомпилирует файлы JSP для веб-приложения и поместит их в специальную папку для каждого веб-приложения.

    Что вы можете сделать, так это написать сценарий для периодического создания дампа jsp-файлов, отправленных пользователями, в каталоге Whatever.war внутри вашего каталога веб-приложений Tomcat.

    Таким образом, Tomcat автоматически скомпилирует JSP и предоставит вам выходной код HttpServlet,

    Затем вы можете проверить журналы Tomcat на наличие исключений компиляции для каждого из этих файлов JSP.

    Прочтите эту статью о том, как сделать это из Ant. с помощью компилятора Jasper и с веб-сайта Apache .

    30.09.2010
    Новые материалы

    Блоги, которые обязательно нужно прочитать специалистам по обработке и анализу данных :
    Добро пожаловать в 2020! Новый год и новое десятилетие. Поскольку мы начинаем новый и захватывающий год в науке о данных, важно, чтобы профессионалы открыли для себя лучшие блоги по науке о..

    Универсальный базовый доход
    Универсальный базовый доход В последние годы концепция всеобщего базового дохода (УБД) набирает обороты как все более эффективное решение для борьбы с растущим неравенством доходов и..

    Освоение Python для анализа финансовых данных: руководство по получению данных о доходах от акций
    Если вы хотите научиться получать данные о доходах от акций с помощью Python, то это руководство для вас! В этой статье мы рассмотрим несколько примеров сбора данных о доходах от акций. Мы..

    Абсолютно имеет смысл.
    Абсолютно имеет смысл. Мой репетитор даже предложил то же самое. Одна проблема, с которой я столкнулся, заключается в том, что для каждой из категорий не было ярлыка «хорошо». Если я перебираю..

    МАШИННОЕ ОБУЧЕНИЕ И EDA
    Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

    В чем основные различия между ReactJS и React-Native?
    В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

    LeetCode — Умножение строк
    Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..