Spring 引导映射静态 html
Spring boot mapping static html
我想创建 spring 引导 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";
}
}
项目结构为
如果您不关心额外的浏览器重定向,您可以使用这个:
@Controller
public class OneController {
@RequestMapping("/one")
public String one() {
return "redirect:/static/one.html";
}
}
请更新您的 WebMvcConfig 并包含 UrlBasedViewResolver 和 /static 资源处理程序。我的 WebConfig class 如下所示:
@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 的回答是基于浏览器的重定向。我的解决方案 returns 是静态的,没有浏览器交互。
在我的例子中,我想将所有子路径映射到同一个文件,但保留原始请求的浏览器路径,同时我使用 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()));
}
}
观察。每次命中都会从index.html文件中读取数据,不会缓存
我是 spring 和 thymeleaf 的新手,花了一个小时试图解决这个问题。
在您的“application.properties”中添加
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
我想创建 spring 引导 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";
}
}
项目结构为
如果您不关心额外的浏览器重定向,您可以使用这个:
@Controller
public class OneController {
@RequestMapping("/one")
public String one() {
return "redirect:/static/one.html";
}
}
请更新您的 WebMvcConfig 并包含 UrlBasedViewResolver 和 /static 资源处理程序。我的 WebConfig class 如下所示:
@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 的回答是基于浏览器的重定向。我的解决方案 returns 是静态的,没有浏览器交互。
在我的例子中,我想将所有子路径映射到同一个文件,但保留原始请求的浏览器路径,同时我使用 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()));
}
}
观察。每次命中都会从index.html文件中读取数据,不会缓存
我是 spring 和 thymeleaf 的新手,花了一个小时试图解决这个问题。
在您的“application.properties”中添加
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html