我有一个Spring Boot应用程序设置为REST API。我现在还希望能够为客户端提供简单的HTML页面,而无需在任何模板引擎(如Thymeleaf)上使用。我希望通过我已经在我的应用程序中使用的WebSecurityConfigurerAdapter
来访问HTML页面,使其不受Spring Security设置的相同安全约束。
我尝试过使用Controller
:
@Controller
public class HtmlPageController {
@RequestMapping(value = "/some/path/test", method = RequestMethod.GET)
public String getTestPage() {
return "test.html";
}
}
并将test.html
文件放在/resources/test.html
或/webapp/WEB-INF/test.html
中。
每次尝试访问localhost:8080/some/path/test
的页面时,都会返回404
。
我如何进行这项工作?
答案 0 :(得分:1)
您的html,js和css文件应位于src / main / resources / static目录下。和您的return语句,您可以尝试删除.html。
@RestController
public class HtmlPageController {
@GetMapping("/some/path/test")
public String getTestPage() {
return "test";
}
}
答案 1 :(得分:1)
存在一种Spring MVC机制,可以提供静态资源。
在config类中,覆盖此方法:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("some/path/*.html")
.addResourceLocations("/static/");
}
并将html文件放置在src/main/webapp/static/
文件夹中。
如果您请求some/path/test.html
(请注意.html
),它将返回位于static
文件夹中的test.html文件。
您显然可以使用其他文件夹或更复杂的目录结构。
这样,您不必创建控制器。请注意,您的配置类应实现WebMvcConfigurer
。
答案 2 :(得分:1)
Okey显然是Spring Boot支持的,不需要任何其他配置或控制器。
我要做的就是将HTML文件放在正确的目录/resources/static/some/path/test.html
中,可以在localhost:8080/some/path/test.html
处找到它。
在尝试更改从中提供文件的目录时,我没有成功。 It seems that提供单独的@EnableWebMvc
(配置资源处理程序所需)破坏了Spring Boot的配置。但是我可以使用默认的/static
目录。
答案 3 :(得分:0)
请参见tutotrial example如何在Spring MVC配置中定义html视图
@Bean public InternalResourceViewResolver htmlViewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setPrefix("/WEB-INF/html/"); bean.setSuffix(".html"); bean.setOrder(2); return bean; }
此外,您需要更改为不带后缀.html
的退货
return "test.html";