GUI-файл появляется как НЕ НАЙДЕННЫЙ в браузере в приложении Spring R5 REST без использования какого-либо XML-файла - PullRequest
0 голосов
/ 28 мая 2019

Я создал REST-приложение Spring 5.x для целей обучения, где я не использую XML-файлы, такие как web.xml или Spring-config XML-файл. В этом приложении есть контроллер и файл GUI. Моя проблема с приведенным ниже кодом инициализации контейнера, я могу либо получить доступ к странице графического интерфейса или контроллера из браузера, но не оба.

CASE-1: В переопределенном методе getServletMappings (), если мы передадим строку «/», метод моего контроллера REST будет вызван правильно, но страница графического интерфейса (index.html) будет отображаться как «Не найдено».

CASE-2: В переопределяющем методе getServletMappings (), если мы передадим строку «/ rest», мой метод контроллера будет отображаться как «Not Found», и страница GUI (index.html) будет доступна.

Я думаю, что мы также используем такую ​​же концепцию в случае файла web.xml. мы просто пишем «/ rest» в отображении сервлета, чтобы передать URL, содержащий строку «/ rest», в dispatcherServelet, и если этот URL не содержит его, будет использоваться для страниц GUI. Но у меня нет идеи реализовать здесь то же самое.

public class SpringMvcInitializer 
extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { SecurityConfig.class, DbConfiguration.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/rest" };
    }

}

Пожалуйста, помогите мне в этом. Спасибо!

1 Ответ

0 голосов
/ 29 мая 2019

Насколько я понимаю, вместо "/" я пытался использовать "/ rest", который является requestMapping уровня класса для контроллера в getServletMappings (). Так что URL без содержания "rest" не будет работать, хотя dispatcherServlet и будет обслуживать запрос страниц пользовательского интерфейса, а URL, содержащий "/ rest", будет отображен для Контроллер метод. Но это не сработало. После многих попыток я наконец-то нашел решение: я попытался создать префикс для входящего URL. и используя эту строку префикса в Метод getServletMappings (). Теперь, если я попытаюсь получить доступ к ресурсу контроллера, используя эту префиксную строку в URL, он будет работать нормально и таким же образом. если я буду использовать URL для страниц пользовательского интерфейса без использования строки префикса, это также будет работать нормально.

-> Способ добавления префикса в URL:

добавить файл application.properties в папку ресурсов с содержимым, где «/ api / *» - строка префикса.

  server.contextPath=/api/*

-> Теперь, если у нас есть URL «http: localhost: 8080 / имя_проекта / register_api» для контроллера, тогда этот URL станет:
"http://localhost:8080/project_name/api/register_api"

-> URL для страницы пользовательского интерфейса index.html будет обычным, как показано ниже: "http://localhost:8080/project_name/index.html"

...