Я создаю небольшой веб-сайт, используя JPA/Hibernate 5.4.2, Java Servlet API 4.0.1 и Tomcat 9 для своего сервера. Я использую Eclipse JEE 4.11 в качестве своей IDE.
По сути, у меня было много проблем с сопоставлениями сервлетов и JSP, и я не могу понять, почему. В одном случае у меня был один конкретный файл JSP, который отказывался подтверждать другие файлы JSP, хотя все они находились в одной папке. Например, он не мог видеть мои файлы заголовков (которые были включены с помощью ), пока я не добавил имя папки (например, "/jsp/Header.jsp"). Однако это приведет к тому, что мои URL-адреса для всех остальных страниц будут испорчены, что не позволит им по очереди загружать верхний и нижний колонтитулы.
Насколько я могу судить, это похоже на то, как будто приложение переключает каталог для доступа к данному файлу, но оно почему-то никогда не возвращается назад, и поэтому другие пути URL становятся недействительными, поскольку теперь они указывают на неправильное местоположение. Стоит отметить, что это не работает для моих тегов, где мне приходилось использовать относительные URL-адреса.
До сих пор мне удавалось исправить многие из этих проблем, добавляя к моим URL-адресам префикс ${pageContext.request.contextPath}, но я столкнулся с ситуацией, когда мои URL-адреса все еще перепутались после посещения определенной страницы.
Я решил использовать файл web.xml (расположенный в "webapp/WEB-INF") для сопоставления моих JSP и сервлетов, с примерами каждого ниже. Обратите внимание, что записи сервлета были сгенерированы Eclipse, но я вручную сопоставил файлы JSP, используя тот же формат. Я дважды проверил XML-файл, чтобы убедиться, что не сделал никаких очевидных ошибок, но пока не нашел ни одной. Единственное, что я обнаружил в своем исследовании, это то, что порядок отображений может быть важен, но никто никогда не дает конкретной информации об этом.
Я также пытался очистить свой проект в Eclipse, обновить проект (поскольку у меня были проблемы с видеофайлами, которые не распознавались моим приложением до этого), и очистить рабочий каталог моего Tomcat. Ничто из этого, кажется, не имело никакого эффекта.
<servlet>
<display-name>ExerciseListServlet</display-name>
<servlet-name>ExerciseListServlet</servlet-name>
<servlet-class>web.ExerciseListServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExerciseListServlet</servlet-name>
<url-pattern>/ExerciseListServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>UserProfile</servlet-name>
<jsp-file>/jsp/UserProfile.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>UserProfile</servlet-name>
<url-pattern>/UserProfile</url-pattern>
</servlet-mapping>
есть идеи? Я хорошо знаю, что я не публиковал много кода, но эта проблема возникала практически с каждой страницей в какой-то момент, и тот факт, что у меня не было этой проблемы в прошлый раз, когда я работал с эти системы говорят мне, что может быть ошибка или неправильная конфигурация с Tomcat, Hibernate или, возможно, Eclipse. На данный момент моя система выдает исключения по совершенно не связанным причинам, хотя я, кажется, знаю почему, поэтому пока не буду это включать.