2015-06-25 1 views
0

ОК, это становится нелепо.Как настроить Spring MVC webapp для использования DispatcherServlet И иметь страницу по умолчанию index.html

Я спросил basically this question пару дней назад и не получил нигде. Я пробовал всевозможные предложения со всех видов веб-страниц, и никто не получает меня туда, где я хочу быть. Я был повсюду над проверенной документацией Spring, которая усложняет сложные и простые вещи.

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

Я хочу следующее: приложение Spring MVC 4.0 (не SpringBoot), использующее DispatcherServlet, которое также отображает страницу index.html по умолчанию, когда в браузер вводится основной URL http://myserver.mycompany.com:8080/myapp.

Это требование не нужно печатать http://myserver.mycompany.com:8080/myapp/index.html, чтобы перейти на эту страницу.

DispatcherServlet будет отображать URL-адреса, такие как http://myserver.mycompany.com:8080/myapp/dothis и http://myserver.mycompany.com:8080/myapp/do/that соответствующим образом настроенные контроллеры.

Я знаю, что этот вопрос задавали снова и снова в Интернете, и ответы все теряются в весенней мелодии, и никто из них, похоже, не работает в моей ситуации.

Другими словами, я хочу, чтобы функциональность приветствуемой страницы, как в не-Spring webapp, и функция диспетчера Spring-MVC в том же приложении. Его не нужно настраивать в web.xml. Пока это работает, как указано выше.

О, и желательно, мне нужны решения, которые используют Spring Annotations.

Простой вопрос. Надеюсь, кто-то может дать мне простой ответ.

UPDATE: Ответы на вопросы, заданные ниже: @JB_Nizet: Ваше предложение, просто используйте код, рекомендованный в весеннем документ и определить страницу приветствия в web.xml является то, что я пытался, и это Безразлично» т работы. И это имеет смысл. Подход к документу Spring использует ALLOWS статические html-документы для обслуживания из /. Но это все еще предотвращает отображение страницы приветствия из корневого URL-адреса. Вы можете перейти к index.html, указав его в URL-адресе, но отображение из/в /index.html не выполняется.

@Aeseir: Да, я бы предпочел подход Java Config, который я назвал выше как «Весенние аннотации».

@ rhinds: Я отвечу на ваш «глупый вопрос» одним из своих: я пробовал различные методы добавления контроллера, который «просто сопоставляется с«/», но я не понимаю, что этот контроллер будет .? есть дЕЛАТЬ Как закодировать контроллер, который ничего не делает, но служить index.html

+0

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-default-servlet-handler –

+0

Спасибо. Я был на этой странице, хотя, и это все еще меня смущает. Я не вижу, где на этой странице отображается то, что отображает URL приложения по умолчанию в index.html. В нем отсутствует какая-то информация о том, что мой слабый мозг весны-ноба не грохнулся. Вам нужно написать собственный сервлет для обслуживания index.html? –

+0

Нет. Вы просто используете код (XML или Java-Config), который содержится в документации, а Spring будет делегировать сервлет по умолчанию для статических ресурсов. Таким образом, он будет обслуживать статические ресурсы из webapp так же, как если бы вы вообще не использовали Sring. Страницы по умолчанию настраиваются в файле web.xml, как сообщает спецификация сервлета. По умолчанию index.html является одной из страниц по умолчанию. –

ответ

4

Если файл index.html подается как статический ресурс, то вы можете настроить это с помощью:

@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("forward:index.html"); 
    } 

} 
1

ответ на этот вопрос было то, что в web.xml были некоторые фильтры безопасности. Я думал, что все это отключилось, комментируя включения безопасности в Spring xml fi но мне кажется, мне пришлось отключить фильтры. Я не понимал этого, пока не нашел время удалить весь XML из приложения в ответ на @JB_Nizet's fine example.Некоторое время потребовалось найти все эквивалентные аннотации Java Config, но как только я это сделал, и он все еще не работал, было довольно легко определить фильтр как виновника и прокомментировать его. Мы вернем его, когда мы будем готовы к обеспечению безопасности.

Я должен сказать, что мне легче найти проблемы с конфигурацией в одном или двух классах Java, чем в нескольких XML-файлах, расположенных повсеместно.