Известно ли, что Eclipse испортил отображения Servlet / JSP? - PullRequest
1 голос
/ 28 июня 2019

Я создаю небольшой веб-сайт с использованием JPA / Hibernate 5.4.2, Java Servlet API 4.0.1 и Tomcat 9 для моего сервера. Я использую Eclipse JEE 4.11 в качестве своей IDE.

По сути, у меня было много проблем с отображениями Servlet и 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 может быть ошибка или плохая конфигурация. В настоящее время моя система генерирует исключения по совершенно не связанным причинам, хотя я думаю, что знаю почему, поэтому пока не буду это включать.

1 Ответ

1 голос
/ 28 июня 2019

Вам просто нужно удалить все содержимое файла web.xml.удалите все сервлеты и соответствующие им сопоставления.

Затем вы можете заставить свой сервлет прослушивать определенный URL, добавив аннотацию WebServlet.Используйте ниже аннотацию в своем коде.

@WebServlet(urlPatterns = "/ExerciseListServlet", loadOnStartup = 1, displayName = "ExerciseListServlet")
@MultipartConfig

Поэтому, когда ваш сервлет использует связанные пути и отображаемое имя.

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