我想创建spring boot web应用程序。
我有两个静态html文件: one.html和two.html。
我想按如下方式映射它们
localhost:8080/one
localhost:8080/two
不使用模板引擎(Thymeleaf)。
如何做到这一点呢?我尝试过许多方法,但我遇到了404或500错误(循环视图路径one.html:将调度回当前处理程序的URL)。
OneController.java是:
@Controller
public class OneController {
@RequestMapping("/one")
public String one() {
return "static/one.html";
}
}
项目结构是
发布于 2016-08-17 22:43:09
请更新您的WebMvcConfig并包含UrlBasedViewResolver和/static资源处理程序。我的WebConfig类如下所示:
@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的答案是基于浏览器的重定向。我的解决方案在没有浏览器交互的情况下返回静态。
发布于 2016-08-17 22:34:48
如果你不关心额外的浏览器重定向,你可以使用这个:
@Controller
public class OneController {
@RequestMapping("/one")
public String one() {
return "redirect:/static/one.html";
}
}
发布于 2018-07-22 01:39:30
在我的例子中,我希望将所有子路径映射到同一个文件,但保持浏览器路径为原始请求的路径,同时我使用thymeleaf,这样我就不想覆盖它的解析器。
@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文件中读取数据,而不会对其进行缓存
https://stackoverflow.com/questions/38999206
复制相似问题