приложение весенней загрузки запускается, но в браузере появляется ошибка 404 - PullRequest
0 голосов
/ 29 мая 2020

Spring запускается приложение загрузки, но я получаю ошибку 404 в веб-браузере, для внешнего интерфейса я использовал jsp. Приложение было разработано весной mvc, затем я преобразовал его в Spring boot. после того, как преобразование выполняется должным образом, но я не вижу данных в браузере. "В этом приложении нет явного сопоставления для / error, поэтому вы рассматриваете это как запасной вариант. Чт, 28 мая, 18:07:37 GMT-06: 00 2020 Произошла непредвиденная ошибка (type = Not Found, status = 404). Нет доступных сообщений "

У меня есть класс WebMvcConfigurer, он содержит мой преобразователь представлений. Мне он нужен? Thymeleaf не нуждается в представлении Reslover, он же и для jps? вот мой класс:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.UrlBasedViewResolver;

import thursday.com.todolist.util.ViewNames;



public class WebConfig implements WebMvcConfigurer {
    private static final String RESOLVER_PREFIX = "/templates/WEB-INF/view/";
    private static final String RESOLVER_SUFFIX = ".jsp";

    @Bean
    public ViewResolver viewResolver(){
        UrlBasedViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix(RESOLVER_PREFIX);
        viewResolver.setSuffix(RESOLVER_SUFFIX);
        return viewResolver;
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName(ViewNames.HOME);
    }
}

1 Ответ

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

Да, вам действительно нужны суффикс и префикс для преобразователя представлений, поскольку внутренний преобразователь представлений использует префикс и суффикс для создания логического сопоставления для вашего представления, но вы также можете указать его в файле application.properties, например:

spring.mvc.view.prefix = /WEB-INF/classes/templates
spring.mvc.view.suffix = .jsp

Кроме того, встроенный пакет Tomcat (который используется в Springboot для создания исполняемого файла jar) не включает JSP по умолчанию, мы также должны добавить модуль «org.apache.tomcat.embed:tomcat-embed-jasper» в качестве зависимости. Причина, по которой мы добавляем tomcat-embed-jasper в качестве зависимости в springboot, так как мы можем использовать теги jstl в jsp. Файлы jsp необходимо преобразовать в html.

  • Кроме того, поскольку вы перешли на spring -boot из spring mvc, убедитесь, что вы удалили аннотацию @EnableWebMvc из своего проекта, так как это отключит все автоконфигурации весенней загрузки. предоставляя самому себе обрабатывать все конфигурации вручную, как в spring- mvc.
  • Также spring-boot и JSP совершенно не работают вместе с jar в качестве упаковки, поэтому попробуйте использовать war упаковка, если вы используете jsp в качестве шаблона представления. Содержимое папки webapp автоматически загружается во время сборки только , если вы сохраняете упаковку как war.
...