Как определить и в web-файле без сервлета 3.0?
У меня есть существующее веб-приложение, которое я хочу преобразовать в web.xml-less из 3.0 сервлета. Мне удалось заставить его работать, однако в web.xml есть 2 тега, которые я до сих пор не знаю эквивалентного кода в среде web.xml-less.
/index.jsp 404 /pageNotFound
Любая помощь приветствуется
- jar не загружен. См. Раздел Servlet Spec 2.3, раздел 9.7.2. Класс нарушения: javax / servlet / Servlet.class
- Tomcat 7.0.73 не работает с java 9
- INFO: Нет типов Spring WebApplicationInitializer, обнаруженных на пути к classам
- Предоставление ресурсов из файлов jar в веб-приложениях (Tomcat7)
- Tomcat 7 - Плагин Maven?
- Как установить контекстный путь веб-приложения в Tomcat 7.0
- Имя не связано в этом контексте
- Tomcat 7 - Servlet 3.0: неверный тег байта в постоянном пуле
- сервер tomcat не запускает сервер и приложение в STS
- Tomcat 7 "SEVERE: дочерний контейнер не сработал во время запуска"
- Источник впрыска Джерси 2 для многочастных форм
- java.lang.ClassNotFoundException: HttpServletRequest
- Экспорт в Excel JSF и PrimeFaces
В Servlets 3.0 вам не нужен web.xml для многих случаев, однако иногда это требуется или просто полезно. Ваш случай – всего лишь один из них – нет специальных аннотаций для определения списка приветственных файлов или страниц ошибок.
Другое дело – хотите ли вы, чтобы они были жестко закодированы? Существуют некоторые допустимые варианты использования для annotations / программной конфигурации и для декларативной конфигурации в XML. Переход на Servlets 3.0 не обязательно означает избавление от web.xml любой ценой.
Я бы нашел записи, которые вы опубликовали, лучший пример конфигурации в XML. Во-первых – их можно изменить с развертывания на развертывание, а во-вторых – они влияют на все приложение, а не на какой-либо конкретный сервлет.
Для аналогового приветствия-списка введите это в
@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"); } ... }
В Spring Boot или общем приложении 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