Измените домашнюю страницу по умолчанию в корневом пути на сервлет с помощью doGet
У меня маленький Maven (косвенно через Netbeans 8.1 и настройку tomcat)
И всякий раз, когда я запускаю проект, он открывает браузер с HelloWord в корне:
то есть страница на http://localhost:8084/
является:
<html>
<head>
<title>Start Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Я попытался создать сервлет, чтобы заменить его, используя:
@WebServlet(name = "HomeServlet", urlPatterns = {"/"})
однако, это не сработало, как ожидалось.
Т.е. он все еще показывал тот же самый привет мир: http://localhost:8084
Но он действительно испортил все файлы в корне, т.е. http://localhost:8084/foo.css
был обработан и этим сервлетом и получил ответ.
Итак, мой вопрос (на самом деле два):
Как я могу изменить содержимое этой страницы на что-то другое?
Или, по крайней мере (если первое невозможно): Могу ли я использовать постоянное перенаправление на корневой путь, чтобы пользователь не видел эту страницу?
(т. е. http код 301), чтобы переместить пользователя в http://localhost:8084/home
2 ответа
Как я могу изменить содержимое этой страницы на что-то другое?
Откройте базовый файл JSP/HTML/XHTML в текстовом редакторе. Эта страница обозначена <welcome-file>
вход в web.xml
, Если это, например, <welcome-file>index.jsp</welcome-file>
тогда вам нужно открыть /index.jsp
файл в веб-контенте вашего проекта во встроенном текстовом редакторе IDE.
Или, по крайней мере (если первое невозможно): Могу ли я использовать постоянное перенаправление на корневой путь, чтобы пользователь не видел эту страницу?
Этот вопрос плохо продуман. Вы не хотите перенаправлять посетителя вперед и назад все время. Вы хотите отобразить свой сервлет в корне веб-приложения. Чтобы сопоставить сервлет с корневым путем, используйте шаблон URL пустой строки ""
вместо шаблона URL сервлета по умолчанию "/"
как в твоей попытке.
@WebServlet("")
Или, если вы еще не используете Servlet 3.0, вот старомодный web.xml
путь.
<servlet-mapping>
<servlet-name>yourHomeServlet</servlet-name>
<url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>
Если вы продолжаете использовать шаблон URL сервлета по умолчанию "/"
затем вы должны взять на себя все обязанности встроенного в контейнер сервлета по умолчанию, такого как обслуживание статических ресурсов, таких как файлы CSS, добавление заголовков кэширования в браузере, поддержка возобновления загрузки файлов и т. д. Подробнее см. также первую ссылку ниже.
По крайней мере, не нужно злоупотреблять <welcome-file>
за это. Это не является "файлом домашней страницы", как многие ожидают. Это представляет "файл папки по умолчанию, который будет использоваться при запросе любой подпапки". Таким образом, не только на /
но и на /foo/
, /bar/
, так далее.
Смотрите также:
Всякий раз, когда вы определяете <welcome-file>index.jsp</welcome-file>
в web.xml целевой страницей при запуске приложения будет страница index.jsp, т. е. по умолчанию путь сервлета будет "/index.jsp" ( http://localhost:8084/index.jsp). Однако в браузере это не будет отображаться. В вашем классе сервлетов вы можете сопоставить этот шаблон и перенаправить на другую страницу, если это необходимо.