SpringMVC:@RequestMapping和静态资源服务的优先级
对于控制器处理程序方法,我具有以下映射:
@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
应用程序视图中使用pure 。由于我不知道如何从控制器方法返回HTML(有人说这是不可能的),因此我决定使用来提供静态HTML
static resource
handler。但是似乎我仍然必须配置一个映射到/
Web应用程序根路径的处理程序方法。虽然我已经index.html
在/static/
路径下放置了。即,我必须有这个:
@RequestMapping(value = "/")public String welcome(Model model) {
return "redirect:index.html"; //must prefix with "redirect:"
}
否则,当我点击时http://mysite/
,我会得到一个404
错误。
回答:
似乎优先级是这样的:
请求到->控制器请求映射->如果控制器中没有有效的映射,请检查静态资源处理程序->如果找不到有效的静态资源,404,糟糕…
回答:
WebMvcConfigurationSupport Javadoc描述了HandlerMapping
默认情况下(即,通过@EnableWebMvc
)注册的bean
及其优先顺序。
映射URL路径时,顺序为:
- 带注释的控制器方法
- 直接查看名称
- 控制器bean名称
- 服务静态资源请求
- 将请求转发到默认servlet
即使您正在构建“纯HTML + JS”应用程序,您仍可能希望将其index.html
转换为模板,并利用某些Spring
MVC功能,例如资源处理和静态资源的缓存清除。
以上是 SpringMVC:@RequestMapping和静态资源服务的优先级 的全部内容, 来源链接: utcz.com/qa/425139.html