我刚开始学习Spring Boot。
我想显示html页面。
但它不起作用。
如果我将HelloWorld.html
更改为HelloWorld.ftl
我可以显示ftl页面,但vue.js
不是解析文件。
以下是我的Spring启动配置文件和控制器。
应用:
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html
spring.mvc.static-path-pattern=/**
资源:static/js/vue.js
,tempates/HelloWorld.html
控制器:
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "HelloWorld";
}
}
答案 0 :(得分:0)
Spring boot提供即插即用型设施,是春季靴子的美感。同样适用于从具有弹簧启动的Web应用程序中的位置提供静态内容。默认情况下,spring boot将类路径中的静态资源作为默认属性提供:
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
默认的静态路径模式是:
spring.mvc.static-path-pattern=/**
但优良做法是提供非默认值。
然而,spring boot还通过实现WebMvcConfigurerAdapter
以编程方式提供该配置的自定义。
@EnableAutoConfiguration
public class AddCustomLocations {
@Bean
WebMvcConfigurer configurer () {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").
addResourceLocations("classpath:/my-custom-location/");
}
};
}
public static void main (String[] args) {
SpringApplication app =
new SpringApplication(AddCustomLocations.class);
app.run(args);
}
}
现在添加新的静态内容,例如src/main/resources/new-custom-location/page1.js
,当找到类似http://localhost:8080/pages/page1.js
的网址格式时,page1.js将作为静态资源。
现在templates/HelloWorld.html
需要修改默认属性(假设文件夹templates
已存在):
spring.mvc.view.prefix=/templates/
spring.mvc.view.suffix=.html
目录/templates/
下的相应html页面将由viewResolver呈现。
如果您使用@EnableWebMvc
,请将其删除。你的问题应该得到解决。
如果仍未解决问题,则覆盖类addViewControllers(ViewControllerRegistry registry)
的{{1}}方法,就像我们在早期代码中所做的那样。在WebMvcConfigurerAdapter
方法之后,在上面的代码中添加以下代码段。
addResourceHandlers (ResourceHandlerRegistry registry)
前缀@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/hello").setViewName("hello");
registry.addViewController("/test").setViewName("testPage");
}
和后缀/templates/
将由视图解析程序添加。