对于控制器处理程序方法,我有以下映射:
@RequestMapping(value = "login.html")
public String doLogin(Model model) {
return "login";
}
对于静态*.html
资源,我有以下配置:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("*.html").addResourceLocations(("/static/"));
}
那么,假设我正在访问login.html
,哪个将优先考虑?有关于by-design
行为的官方文件吗?
再加上一些背景
我想使用纯HTML+JS
来查看我的应用程序。由于我不知道如何从控制器方法返回HTML (有人说这是不可能的),所以我决定使用static resource handler
提供静态HTML。但是,我仍然需要为我的web应用程序配置一个映射到根路径/
的处理程序方法。尽管我已经在index.html
路径下放置了一个/static/
。也就是说,我必须这样做:
@RequestMapping(value = "/")
public String welcome(Model model) {
return "redirect:index.html"; //must prefix with "redirect:"
}
否则,当我点击http://mysite/
时,我将得到一个404
错误。
加2 --一些实验结果
似乎优先权是这样的:
-> controller请求映射->如果控制器中没有有效的映射,检查静态资源处理程序->如果没有找到有效的静态资源,404,Oops.
添加3-3个可能的选项来服务静态资源。
我把问题移到这里:
发布于 2015-12-04 20:52:26
WebMvcConfigurationSupport Javadoc描述默认注册的HandlerMapping
bean(即@EnableWebMvc
)及其优先级。
在映射URL路径时,顺序是:
即使您正在构建一个“纯HTML+JS”应用程序,您也可能希望将该index.html
转化为一个模板,并利用一些Spring特性,例如资源处理和静态资源的缓存破坏。看看德沃克斯的谈话。
https://stackoverflow.com/questions/34084784
复制相似问题