gpt4 book ai didi

SpringMVC : The precedence of @RequestMapping and Static Resource serving

转载 作者:行者123 更新时间:2023-12-02 09:02:12 24 4
gpt4 key购买 nike

我有以下 Controller 处理程序方法的映射:

@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行为的官方文档吗?

添加 1 一些背景

我想使用纯 HTML+JS 作为我的应用程序的 View 。由于我不知道如何从 Controller 方法返回 HTML(有人说这是不可能的),因此我决定使用静态资源处理程序来提供静态 HTML。但看来我仍然需要为我的 Web 应用程序配置映射到根路径 / 的处理程序方法。虽然我已经在/static/路径下放置了一个index.html。也就是说,我必须有这个:

@RequestMapping(value = "/")
public String welcome(Model model) {
return "redirect:index.html"; //must prefix with "redirect:"
}

否则,当我点击 http://mysite/ 时,我会收到 404 错误。

ADD 2——一些实验结果

看起来优先级是这样的:

request comes -> Controller request mapping -> If no valid mapping in controller, check static resource handler -> if no valid static resource found, 404, Oops...

添加 3 - 3 个可能的选项来提供静态资源。

我把问题移到这里:

Static resource serving in SpringMVC

最佳答案

The WebMvcConfigurationSupport Javadoc描述默认注册的 HandlerMapping bean(即通过@EnableWebMvc)及其优先顺序。

映射 URL 路径时,顺序为:

  1. 带注释的 Controller 方法
  2. 直接查看姓名
  3. Controller bean 名称
  4. 提供静态资源请求
  5. 将请求转发到默认 servlet

即使您正在构建“纯 HTML+JS”应用程序,您也可能希望将 index.html 转换为模板并利用一些 Spring MVC 功能,例如资源处理和静态资源的缓存清除。看看this Devoxx talk .

关于SpringMVC : The precedence of @RequestMapping and Static Resource serving,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34084784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com