首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SpringMVC:@RequestMapping和静态资源服务的优先级

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

Stack Overflow用户
提问于 2015-12-04 09:22:26
回答 1查看 2K关注 0票数 4

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

代码语言:javascript
运行
复制
@RequestMapping(value = "login.html")
public String doLogin(Model model) {
    return "login";
}

对于静态*.html资源,我有以下配置:

代码语言:javascript
运行
复制
public void addResourceHandlers(ResourceHandlerRegistry registry) {
     registry.addResourceHandler("*.html").addResourceLocations(("/static/"));
}

那么,假设我正在访问login.html,哪个将优先考虑?有关于by-design行为的官方文件吗?

再加上一些背景

我想使用纯HTML+JS来查看我的应用程序。由于我不知道如何从控制器方法返回HTML (有人说这是不可能的),所以我决定使用static resource handler提供静态HTML。但是,我仍然需要为我的web应用程序配置一个映射到根路径/的处理程序方法。尽管我已经在index.html路径下放置了一个/static/。也就是说,我必须这样做:

代码语言:javascript
运行
复制
@RequestMapping(value = "/")
public String welcome(Model model) {
    return "redirect:index.html"; //must prefix with "redirect:"
}

否则,当我点击http://mysite/时,我将得到一个404错误。

加2 --一些实验结果

似乎优先权是这样的:

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

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

我把问题移到这里:

SpringMVC中的静态资源服务

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 20:52:26

WebMvcConfigurationSupport Javadoc描述默认注册的HandlerMapping bean(即@EnableWebMvc)及其优先级。

在映射URL路径时,顺序是:

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34084784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档