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路径时,顺序为:

  1. 带注释的控制器方法
  2. 直接查看名称
  3. 控制器bean名称
  4. 服务静态资源请求
  5. 将请求转发到默认servlet

即使您正在构建“纯HTML + JS”应用程序,您仍可能希望将其index.html转换为模板,并利用某些Spring

MVC功能,例如资源处理和静态资源的缓存清除。

以上是 SpringMVC:@RequestMapping和静态资源服务的优先级 的全部内容, 来源链接: utcz.com/qa/425139.html

回到顶部