Отладка JSP в IntelliJ IDEA - PullRequest
       40

Отладка JSP в IntelliJ IDEA

45 голосов
/ 29 августа 2008

Кто-нибудь знает, как отлаживать JSP в IntelliJ IDEA?

Когда я устанавливаю точку останова в моих JSP файлах, эти точки останова, кажется, никогда не вступают в силу. Отладчик никогда их не ударит. Кажется, IDEA считает, что точки останова действительны. Я вижу красную точку, расположенную слева от линии, где я размещаю точку останова.

Я прочитал в форуме IntelliJ в этом посте , что JSP файлы должны быть в web-inf для отладки для работы

Но потом я также прочитал, что файлы JSP, размещенные в web-inf, не будут доступны непосредственно пользователю.

Я не уверен, кто действительно прав.

Ответы [ 6 ]

33 голосов
/ 26 августа 2009

Для отладки JSP в Intellij есть несколько конфигураций, которые должны быть в порядке. Тот факт, что Intellij всегда позволяет вам добавить точку останова на линии JSP, не обязательно означает, что вы настроили отладку JSP. Далее я ссылаюсь на конфигурацию Intellij 8, w.r.t. В предыдущих версиях вам нужно будет выполнять аналогичные операции, так как понятия совпадают.

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

Конфигурация веб-приложения : для отладки JSP в структуре проекта должен быть фасет «web», указывающий на правильный файл web.xml. В зависимости от типа структуры веб-приложения, которую вы используете, Intellij может автоматически обнаруживать фасет (в любом случае, чтобы проверить, что он сделал), или вам, возможно, придется добавить его вручную. Помните, что на вкладке «Параметры сборки Java EE» можно установить «Создать каталог с разнесенными веб-фасетами»; если вам не нужны дубликаты, нужно просто включить его и указать на уже существующий каталог.

(Web) Сервер приложений : Перейдите в «Редактирование конфигураций», там вы должны добавить в конфигурации сервер приложений, а не запускать веб-сервер как приложение, как любое другое. Таким образом, Intellij сможет перехватывать вызовы JSP. В списке серверов приложений у вас должен быть сервер по умолчанию Tomcat. Убедитесь, что у вас установлена ​​локальная установка Tomcat, и укажите на это при добавлении сервера веб-приложений. Последний прием - перейти на вкладку «Развертывание» и выбрать в качестве «источника развертывания» тот же аспект, который вы настроили на предыдущем шаге.

Та же конфигурация работает, если вы хотите использовать другой сервер веб-приложений, я протестировал ее с последними выпусками Caucho Resin, и отладка работает отлично (не с предыдущими комбинациями Intellij и Resin).

Если вы не видите Tomcat в списке доступных серверов приложений для добавления, проверьте плагины на общей панели настроек Intellij: в последних выпусках все больше и больше функций стали «подключаемыми» и даже очень простые функции может быть отключен; этот плагин называется «интеграция Tomcat».

Наконец, это, безусловно, неправда, что файлы JSP должны находиться в WEB-INF, чтобы быть в состоянии отладки.

24 голосов
/ 21 мая 2014

Для удаленной отладки JSP (которая также относится к localhost) вам необходимо установить плагин поддержки JSR45 . Обратите внимание, что эта функция поддерживается только в окончательной версии IntelliJ, но не в версии сообщества.

  1. Перейдите к Настройки > Плагины , найдите плагин JSR45 и включите его.
  2. Создание конфигурации запуска: Выполнение > Настройка запуска > нажмите + и выберите JSR45-совместимый сервер , а затем в открывшемся диалоговом окне выберите Удаленный и укажите хост и порт сервера. Настройка Сервер приложений: Общий должен работать нормально.
  3. Убедитесь, что вы установили правильный порт в Запуск / Настройка > Отладка .

  4. Откройте настройки модуля ( F3 в папке проекта) и добавьте Веб-фасет в Грани и в Веб Каталоги ресурсов укажите корневую папку JSP.

  5. Нажмите кнопку Configuration ... и выберите папки с bean-компонентами, классами и библиотеками, от которых зависят ваши JSP.

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

6 голосов
/ 15 сентября 2009

В любом случае вам нужно запускать Tomcat в IDEA, а не с удаленного Tomcat.

1 голос
/ 04 марта 2016

Пожалуйста, убедитесь, что в вашем tomcat conf / web.xml suppressSmap не включено, так как отладчик IntelliJ требует поддержки JSR45. *

Это должно выглядеть так:

<init-param>
  <param-name>suppressSmap</param-name>
  <param-value>false</param-value>
</init-param>

С https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html

suppressSmap - Следует ли подавлять создание информации SMAP для отладки JSR45? true или false, по умолчанию false.

0 голосов
/ 22 февраля 2018

Если вы используете отладчик Intellij, вы можете получить значение отдельного атрибута, поместив точку останова в JSP и оценив выражение this.jspContext.request.getAttribute("attributeName").

Обратите внимание, что это может вернуть тип Java-объекта, и вам может потребоваться привести его к правильному типу. Также, если вы запускаете удаленный Tomcat, IDEA не будет достигать никаких точек останова, поэтому вам нужно запустить Tomcat в режиме отладки изнутри IDEA.

0 голосов
/ 29 августа 2008

Для второй части вашего вопроса («jsp-файлы, размещенные в web-inf, не будут напрямую доступны пользователю»), это правильно. Чтобы разрешить пользователям доступ к файлам JSP в папке WEB-INF, необходимо ввести записи сервлета и сопоставления сервлетов в файле web.xml для каждой страницы JSP.

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