Как настроить Spring MVC webapp для использования DispatcherServlet И иметь страницу по умолчанию index.html
ОК, это становится смешным.
Я задавал в основном этот вопрос пару дней назад и ничего не получил с ним. Я пробовал всевозможные предложения со всевозможных веб-страниц, и ни одно из них не дает мне того, чего я хочу. Я был во всей исполнительной документации 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, и функциональность диспетчера Spring-MVC в том же приложении. Это не должно быть настроено в web.xml. Пока это работает, как указано выше.
Ох, и желательно, чтобы я хотел решения, которые используют Spring Annotations.
Простой вопрос Я надеюсь, что кто-то может дать мне простой ответ.
ОБНОВЛЕНИЕ: Ответы на вопросы, заданные ниже:@JB_Nizet: Ваше предложение, просто используйте код, рекомендованный в весеннем документе, и определите страницу приветствия в web.xml - это то, что я пробовал, и оно не работает. И это имеет смысл. Подход к документу Spring позволяет использовать статические HTML-документы из /. Но это все еще препятствует отображению страницы приветствия из корневого URL. Вы можете получить доступ к index.html, указав его в URL, но отображение из / в /index.html не выполняется.
@ Aeseir: Да, я бы тоже предпочел подход Java Config, который я упоминал выше как "Spring Annotations".
@rhinds: я отвечу на твой "глупый вопрос" одним из моих собственных: я пробовал разные способы добавления контроллера, который "просто отображается на"/", но я не понимаю, что этот контроллер должен делать. Как мне написать контроллер, который ничего не делает, кроме как служит index.html?
2 ответа
Если твой index.html
файл является статическим ресурсом, тогда вы можете настроить его следующим образом:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:index.html");
}
}
Ответ был в том, что в web.xml были фильтры безопасности. Я думал, что отключил все это, комментируя включения безопасности в весенних XML-файлах, но, думаю, мне пришлось отключить фильтры. Я не осознавал этого, пока не нашел время удалить весь XML из приложения, в ответ на прекрасный пример @JB_Nizet. Потребовалось некоторое время, чтобы найти все эквивалентные аннотации Java Config, но как только я сделал это, и он все еще не работал, было довольно легко определить фильтр как виновного и прокомментировать его. Мы вернем его обратно, когда будем готовы обеспечить безопасность.
Я должен сказать, что мне легче находить проблемы конфигурации в одном или двух классах Java, чем в нескольких XML-файлах, расположенных повсюду.