Страницы

среда, 27 июня 2012 г.

Переадресация с hello-page на default-servlet

На работе возникла задача.
Исходные данные:
Есть приложение, которое содержит несколько сервлетов, привязанных к своим адресам:
"/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>
Адрес второго маппинга указан как "/", а не "/*", чтобы этот сервлет не перехватывал абсолютно все обращения - на других адресах висит еще несколько сервлетов.
Недостатки:
  1. статические ресурсы становятся недоступны (в том числе теряются таблицы стилей)
  2. ресурсы сервлета получают 2 набора адресов ("/someAddr" & "/config/someAddr") 


Решение 2:

Создать дополнительный сервлет для переадресации обращений к адресу "/".
Недостатки:
  1. аналогично решению "1" - статические ресурсы становятся недоступны
  2. появляется дополнительный сервлет. Возможно это практически не влияет на производительность, и лишний класс - не большая беда. Но мне не нравится "стрелять из пушки по воробьям" - с такой простой операцией, как переадресация можно было бы справится проще.


Решение 3:

Я не сразу додумался до этого варианта (потому и решил написать этот пост) - переадресация с помощью JavaScript на странице приветствия:
<script type="text/javascript">
<!--
window.location = "config/"
-->
</script>
Это все, что есть в index.html. Идеальный результат.
Недостатки: отсутствуют

Комментариев нет:

Отправить комментарий