Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringMVC:@RequestMapping和静态资源服务的优先级_Spring_Spring Mvc_Web Development Server - Fatal编程技术网

SpringMVC:@RequestMapping和静态资源服务的优先级

SpringMVC:@RequestMapping和静态资源服务的优先级,spring,spring-mvc,web-development-server,Spring,Spring Mvc,Web Development Server,我有控制器处理程序方法的以下映射: @RequestMapping(value = "login.html") public String doLogin(Model model) { return "login"; } 对于静态*.html资源,我有以下配置: public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("*.html").ad

我有控制器处理程序方法的以下映射:

@RequestMapping(value = "login.html")
public String doLogin(Model model) {
    return "login";
}
对于静态
*.html
资源,我有以下配置:

public void addResourceHandlers(ResourceHandlerRegistry registry) {
     registry.addResourceHandler("*.html").addResourceLocations(("/static/"));
}
因此,假设我访问的是
login.html
,那么哪一个将优先? 关于设计的
行为的任何官方文件

添加1个背景 我想使用纯
HTML+JS
查看我的应用程序。因为我不知道如何从控制器方法返回HTML(有人说这是不可能的),所以我决定使用
静态资源处理程序
来提供静态HTML。但似乎我仍然必须为我的web应用程序配置一个映射到根路径
/
的处理程序方法。尽管我已经在
/static/
路径下放置了一个
index.html
。i、 我必须有这个:

@RequestMapping(value = "/")
public String welcome(Model model) {
    return "redirect:index.html"; //must prefix with "redirect:"
}
否则,当我点击
http://mysite/
,我将得到一个
404
错误

添加2--一些实验结果 似乎优先顺序是这样的:

请求来->控制器请求映射->如果控制器中没有有效映射,请检查静态资源处理程序->如果没有找到有效的静态资源,404,Oops

添加3-3个可能的选项来服务静态资源。 我把问题移到这里:

描述默认情况下注册的
HandlerMapping
bean(即通过
@EnableWebMvc
)及其优先顺序

映射URL路径时,顺序为:

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

  • 即使您正在构建一个“纯HTML+JS”应用程序,您也可能希望将该
    index.HTML
    转化为一个模板,并利用Spring MVC的一些特性,例如静态资源的资源处理和缓存破坏。看看。

    谢谢你的回答。我是Spring的新手,我不喜欢过早地跳转到Spring Boot。您能详细介绍一下如何将index.html转换成模板吗?Spring团队向经验丰富的开发人员和新手推荐Spring Boot。至于你的其他问题,我认为它们与你的第一个问题是正交的,属于一个单独的SO线程。记住,这对其他人也应该有用,不要让读者被内容和多个问题淹没。明白了。准备好单词后,我将为我的
    添加3
    启动另一个线程。