有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Spring引导的java服务索引页

我已经看遍了所有的地方,但我不知道我在打包的spring boot jar文件中提供index.html页面的方式有什么不对。这是我的应用程序结构:

package structure

当我运行mvn clean install时,它会正确地打包jar,并将index.html文件放入jar中的静态文件夹中

这是我的MVC配置:

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

有什么我做得不好的吗


共 (4) 个答案

  1. # 1 楼答案

    在spring boot项目中,只需扩展WebMVCConfigureAdapter并覆盖addResourceHandlers即可实现此功能,如下所示

        @SpringBootApplication
        public class DemoApplication extends WebMvcConfigurerAdapter {
    
            public static void main(String[] args) {
                SpringApplication.run(DemoApplication.class, args);
            }
    
            @Override
            public void addResourceHandlers(ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
            }   
        }
    

    可在http://localhost:8080/static/index.html上访问索引页

  2. # 2 楼答案

    尝试将“类路径”添加到资源位置

    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    
  3. # 3 楼答案

    我相信你应该读一下,如何为静态内容服务:

    http://docs.spring.io/spring-boot/docs/1.4.2.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

    总而言之,浏览器正在缓存静态资源,如CSS文件或html文件

    为了打破这种行为,请尝试先清理浏览器缓存,在谷歌浏览器中进入“设置”,然后清除浏览数据

    其次,将这些行添加到应用程序中。属性文件以破坏缓存:

    spring.resources.chain.strategy.content.enabled=true
    spring.resources.chain.strategy.content.paths=/**
    

    或者添加以下内容:

    spring.resources.chain.strategy.fixed.enabled=true
    spring.resources.chain.strategy.fixed.paths=/**
    spring.resources.chain.strategy.fixed.version=v12
    
  4. # 4 楼答案

    好的,多亏了多方的帮助,我把它修好了!以下是我为帮助其他人所做的:

    1)在POM中添加此资源。我仍然不知道为什么我需要这个,但没有这个我的应用程序将无法运行。Spring boot应该自动执行此操作,但显然不是

    <resources>
        <resource>
            <directory>src/main/resources/static</directory>
            <targetPath>static</targetPath>
        </resource>
    </resources>
    

    2)在我的MVC配置中,我添加了以下内容(与下面的答案类似):

        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);
        }
    

    在添加这两个东西之后,我的应用程序开始提供文件