smw*_*dia 5 spring spring-mvc web-development-server
我有以下控制器处理程序方法的映射:
@RequestMapping(value = "login.html")
public String doLogin(Model model) {
return "login";
}
Run Code Online (Sandbox Code Playgroud)
我对静态*.html资源有以下配置:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("*.html").addResourceLocations(("/static/"));
}
Run Code Online (Sandbox Code Playgroud)
那么假设我正在访问login.html,哪一个会优先?有关于这种by-design行为的官方文件吗?
我想使用 pureHTML+JS作为我的应用程序的视图。由于我不知道如何从控制器方法返回 HTML(有人说这是不可能的),我决定使用static resource handler. 但看来我仍然必须配置映射到/我的 Web 应用程序的根路径的处理程序方法。虽然我已经在路径index.html下放置了一个/static/。即,我必须有这个:
@RequestMapping(value = "/")
public String welcome(Model model) {
return "redirect:index.html"; //must prefix with "redirect:"
}
Run Code Online (Sandbox Code Playgroud)
否则,当我点击 时http://mysite/,我会得到一个404错误。
看起来优先级是这样的:
请求到来 -> 控制器请求映射 -> 如果控制器中没有有效映射,请检查静态资源处理程序 -> 如果找不到有效的静态资源,404,哎呀...
我把问题移到这里:
WebMvcConfigurationSupport Javadoc描述了HandlerMapping默认注册的 bean(即通过@EnableWebMvc)及其优先顺序。
映射 URL 路径时,顺序为:
即使您正在构建“纯 HTML+JS”应用程序,您也可能希望将其转换index.html为模板并利用一些 Spring MVC 功能,例如静态资源的资源处理和缓存清除。看看Devoxx 的演讲。
| 归档时间: |
|
| 查看次数: |
2342 次 |
| 最近记录: |