Подтвердить что ты не робот

Как определить <welcome-file-list> и <error-page> в сервлет 3.0 web.xml-less?

У меня есть существующее веб-приложение, которое я хочу преобразовать в web.xml-less из сервлета 3.0. Мне удалось заставить его работать, однако в web.xml есть 2 тега, которые я до сих пор не знаю эквивалентного кода в среде web.xml-less.

<welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
</welcome-file-list>

<error-page>
    <error-code>404</error-code>
    <location>/pageNotFound</location>
</error-page>

Любая помощь приветствуется

4b9b3361

Ответ 1

В Servlets 3.0 вам не нужен web.xml для многих случаев, однако иногда это требуется или просто полезно. Ваш случай - всего лишь один из них - нет специальных аннотаций для определения списка приветственных файлов или страниц ошибок.

Другое дело - хотите ли вы, чтобы они были жестко закодированы? Существуют некоторые допустимые варианты использования для аннотации/программной конфигурации и для декларативной конфигурации в XML. Переход на Servlets 3.0 не обязательно означает избавление от web.xml любой ценой.

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

Ответ 2

Для аналогового приветствия-списка введите это в

@EnableWebMvc
@Configuration
@ComponentScan("com.springapp.mvc")
public class MvcConfig extends WebMvcConfigurerAdapter {
...
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/*.html").addResourceLocations("/WEB-INF/pages/");
    }

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

Ответ 3

В Spring Загрузка или общее приложение Spring MVC для следующего сценария:

Статические файлы могут обслуживаться из мест, зарегистрированных с помощью специального ресурса ResourceHandlerRegistry. У нас есть статический ресурс index.html, и он доступен на localhost: 8080/index.html. Мы хотим просто перенаправить localhost: 8080/request to localhost: 8080/index.html, следующий код может быть использован.

package in.geekmj.config;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;

import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
        "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addRedirectViewController("/", "/index.html");
}
}

Теперь доступ к localhost: 8080/будет перенаправлен на localhost: 8080/index.html