首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring boot映射静态html

Spring boot映射静态html
EN

Stack Overflow用户
提问于 2016-08-17 22:16:17
回答 4查看 14.5K关注 0票数 2

我想创建spring boot web应用程序。

我有两个静态html文件: one.html和two.html。

我想按如下方式映射它们

代码语言:javascript
复制
localhost:8080/one
localhost:8080/two

不使用模板引擎(Thymeleaf)。

如何做到这一点呢?我尝试过许多方法,但我遇到了404或500错误(循环视图路径one.html:将调度回当前处理程序的URL)。

OneController.java是:

代码语言:javascript
复制
@Controller
public class OneController {
    @RequestMapping("/one")
    public String one() {
        return "static/one.html";
    }
}

项目结构是

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-17 22:43:09

请更新您的WebMvcConfig并包含UrlBasedViewResolver和/static资源处理程序。我的WebConfig类如下所示:

代码语言:javascript
复制
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }

    @Bean
    public ViewResolver viewResolver() {
        UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
        viewResolver.setViewClass(InternalResourceView.class);
        return viewResolver;
    }

}

我已经检查过了,似乎还能用。

Maciej的答案是基于浏览器的重定向。我的解决方案在没有浏览器交互的情况下返回静态。

票数 6
EN

Stack Overflow用户

发布于 2016-08-17 22:34:48

如果你不关心额外的浏览器重定向,你可以使用这个:

代码语言:javascript
复制
@Controller
public class OneController {
    @RequestMapping("/one")
    public String one() {
        return "redirect:/static/one.html";
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-22 01:39:30

在我的例子中,我希望将所有子路径映射到同一个文件,但保持浏览器路径为原始请求的路径,同时我使用thymeleaf,这样我就不想覆盖它的解析器。

代码语言:javascript
复制
@Controller
public class Controller {

    @Value("${:classpath:/hawtio-static/index.html}")
    private Resource index;

    @GetMapping(value = {"/jmx/*", "/jvm/*"}, produces = MediaType.TEXT_HTML_VALUE)
    @ResponseBody
    public ResponseEntity actions() throws IOException {
        return ResponseEntity.ok(new InputStreamResource(index.getInputStream()));
    }
}

Obs。每次命中都会从index.html文件中读取数据,而不会对其进行缓存

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38999206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档