Как использовать SpringMVC без контроллера, используя ViewControllerRegistry с addViewController () и так далее?

Я читаю следующую статью:

https://www.concretepage.com/spring-4/spring-4-mvc-without-controller-using-viewcontrollerregistry-with-addviewcontroller-addredirectviewcontroller-and-addstatuscontroller-example

Предоставляется конфигурация сопоставления:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/home").setViewName("myhome");
    registry.addViewController("/hello").setViewName("helloworld");
    registry.addRedirectViewController("/home", "/hello");
    registry.addStatusController("/detail", HttpStatus.BAD_REQUEST);        
} 

Автор пишет:

  1. When we access URL /hello then helloworld.jsp will run.
  2. When we access URL /home then helloworld.jsp will run because it will be redirected to the URL /hello.
  3. When we access URL /detail then we will get header response with 400 HTTP status code.

Таким образом, линия

registry.addViewController("/home").setViewName("myhome");

бесполезно?

Также в другом руководстве я нашел следующую конфигурацию:

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


registry.addViewController("/")
                .setViewName("forward:/index");

Эта линия ясна. Это означает, что если я попытаюсь получить доступ к корневому URL-адресу, приложение будет повторно запускать index.jsp

Но в чем смысл

registry.addViewController("/index");
registry.addViewController("/securedPage");

?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
499
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, перенаправление перезапишет исходное сопоставление, которое было

registry.addViewController("/home").setViewName("myhome");

Что касается контроллеров представления без явного задания имени представления, они будут (пытаться) показать index.jsp и securedPage.jsp соответственно.

Из ViewControllerRegistration.setViewName(String viewName):

Set the view name to return. Optional.

If not specified, the view controller will return null as the view name in which case the configured RequestToViewNameTranslator will select the view name. The DefaultRequestToViewNameTranslator for example translates "/foo/bar" to "foo/bar".

Таким образом, RequestToViewNameTranslator преобразует /securedPage в securedPage, а ViewResolver (в данном случае для JSP InternalResourceViewResolver) затем найдет JSP на основе этого.

Другие вопросы по теме