Исходные данные:
Есть приложение, которое содержит несколько сервлетов, привязанных к своим адресам:
"/appName/servlet1/*"
"/appName/servlet2/*"
etc.
В корне приложения "/appName/" лежит index.html - hello-страница, не содержащая ничего полезного.
Задача:
страницу приветствия нужно убрать, обращение к "/appName/" должно переадресовываться на сервлет по-умолчанию, находящийся по адресу "/appName/config/"
Решение 1:
сервлету можно прописать дополнительный mapping на ардрес "/"<servlet>Адрес второго маппинга указан как "/", а не "/*", чтобы этот сервлет не перехватывал абсолютно все обращения - на других адресах висит еще несколько сервлетов.
<servlet-name>ConfigServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> ConfigServlet</servlet-name>
<url-pattern>/config/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name> ConfigServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Недостатки:
- статические ресурсы становятся недоступны (в том числе теряются таблицы стилей)
- ресурсы сервлета получают 2 набора адресов ("/someAddr" & "/config/someAddr")
Решение 2:
Создать дополнительный сервлет для переадресации обращений к адресу "/".Недостатки:
- аналогично решению "1" - статические ресурсы становятся недоступны
- появляется дополнительный сервлет. Возможно это практически не влияет на производительность, и лишний класс - не большая беда. Но мне не нравится "стрелять из пушки по воробьям" - с такой простой операцией, как переадресация можно было бы справится проще.
Решение 3:
Я не сразу додумался до этого варианта (потому и решил написать этот пост) - переадресация с помощью JavaScript на странице приветствия:<script type="text/javascript">
<!--
window.location = "config/"
-->
</script>Это все, что есть в index.html. Идеальный результат.
Недостатки: отсутствуют
Комментариев нет:
Отправить комментарий