当前位置: 首页 > 知识库问答 >
问题:

Spring Boot应用程序不提供Web内容

虞滨海
2023-03-14

我有Spring Boot Web应用程序,最初是为内部Tomcat服务器构建的(有效)。然后我采用了该应用程序在Web Logic服务器上运行。我的应用程序编译并部署到服务器没有问题,但当它不服务MVC页面时。每次调用都会抛出404错误。从下面的错误看,它看起来像Spring调度程序servlet存在,但甚至区域设置都没有正确设置。我无法弄清楚这里有什么问题或缺失,但当我创建RestController而不是MVC时,它可以工作并显示内容。应用程序基于Sprint Boot 2.3.2

<代码>

应用类:

@SpringBootApplication
@ComponentScan({"ie.gov.agriculture.alf", "ie.gov.agriculture.sso"})
public class AlfApplication extends SpringBootServletInitializer implements WebApplicationInitializer {

    public AlfApplication() {
        super();
        setRegisterErrorPageFilter(false); // disable ErrorPageFilter causing bullshit error messages
    }

    @Override
    public void onStartup(ServletContext servletContext) {
        AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
        appContext.register(AppConfig.class);
        appContext.register(WebMvcConfig.class);

        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher", new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

        ContextLoaderListener contextLoaderListener = new ContextLoaderListener(appContext);
        servletContext.addListener(contextLoaderListener);

        // Filter.
        FilterRegistration.Dynamic filterReg = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
        filterReg.setInitParameter("encoding", "UTF-8");
        filterReg.setInitParameter("forceEncoding", "true");
        filterReg.addMappingForUrlPatterns(null, true, "/*");
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AlfApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(AlfApplication.class, args);
    }
}

AppConfig类:

@Configuration
@EnableCaching
public class AppConfig {

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("messages");
        return messageSource;
    }

    @Bean
    public LocalValidatorFactoryBean messageValidator() {
        LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
        validator.setValidationMessageSource(this.messageSource());
        return validator;
    }

    @Bean
    public ConversionServiceFactoryBean convertionService() {
        return new ConversionServiceFactoryBean();
    }

    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager("alfCache");
    }
}

最后WebMvcConfig类:

@Configuration
@ServletComponentScan
public class WebMvcConfig implements WebMvcConfigurer {

    @Bean
    public ViewResolver getViewResolver() {
        UrlBasedViewResolver resolver = new UrlBasedViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }

    @Bean
    public CommonsMultipartResolver multipartResolver() {
        return new CommonsMultipartResolver();
    }

    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }

    @Bean
    public CookieLocaleResolver cookieLocaleResolverExample() {
        CookieLocaleResolver localeResolver = new CookieLocaleResolver();
        localeResolver.setDefaultLocale(Locale.ENGLISH);
        localeResolver.setCookieName("alf-locale-cookie");
        localeResolver.setCookieMaxAge(3600);
        return localeResolver;
    }

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setDefaultLocale(Locale.UK);
        localeResolver.setDefaultTimeZone(TimeZone.getTimeZone("UTC"));
        return localeResolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

共有1个答案

殳越
2023-03-14

这个问题的答案通常是一个简单的技巧,消息配置bean应该是这样的,并且一切都很好,关键是setBasenema中的“classpath:”

@Bean
public ReloadableResourceBundleMessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages");
    return messageSource;
}
 类似资料:
  • 我正在使用Spring Boot,并试图使我的静态资源(CSS,JS,字体)在部署时可用。源代码可供您查看或从https://github.com/joecracko/StaticResourceError.克隆 现在我的CSS、JS和字体文件对我部署的网站不可见。 下面是我的项目目录结构: 下面是编译后的JAR的根目录:我向您保证,这些文件存在于各自的文件夹中。 以下是我看到的网络错误: 以下是

  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 我没有做任何更改,我只是运行“CreateReact应用程序客户端”,然后一切正常运行,我将cd放入目录并运行“ThreadStart”。然后我有两个问题:1)它说“有些东西已经在3000端口上运行了”。不幸的是,当我使用lsof和netstat时,端口3000上没有运行任何东西。我说在不同的端口上运行,然后它会尝试为应用程序提供服务。2) 新港口没有提供任何服务。浏览器将打开,控制台不会给出任何

  • 当Web应用程序在Docker中被容器化时,我无法让我的ASP. NET Web应用程序提供给我的浏览器。 我正在运行一个Mac,我已经使用Visual Studio Code创建了一个ASP. NET Web应用程序。这是一个简单的开箱即用的演示,它基于“空应用程序”当运行本机(在Docker之外)时,此应用程序提供Hello World!http://localhost:5000很好。换句话说

  • 2020-06-26T09:26:58.880610+00:00Heroku[web.1]:状态从开始更改为>崩溃2020-06-26T12:16:58.291701+00:00Heroku[web.1]:状态从崩溃更改为>开始2020-06-26T12:17:05.611518+00:00Heroku[web.1]:用命令启动进程>2020-06-26T12:17:08.625648+00:00

  • 我有一个小型java webapp,由三个微服务组成——api-service、book-service和db-service,所有这些都使用mini kube本地部署在kubernetes集群上。 我计划为api-service和book-service保留单独的UI,从单独的pod提供常见的静态文件,可能是映像。 我能够创建一个前端,为参考本教程的nginx:alpine中的静态文件提供服务。