首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAX的注释@ApplicationPath是如何与非rest资源并排工作的?

JAX的注释@ApplicationPath是如何与非rest资源并排工作的?
EN

Stack Overflow用户
提问于 2016-11-28 06:38:27
回答 1查看 794关注 0票数 0

我一直在创建一个restful,我遇到了一些问题,在互联网上找不到任何关于它的信息。

如果我有一个restful,它的applicationPath指向同一个项目的"/"和一些非rest资源,会发生什么呢?同样的问题也适用于我添加到一个项目中而被忽略的静态内容。

让我们使用域foo.com和上下文名bar作为示例:

我创建了一个rest接口,它的@applicationPath指向"/",资源的@path指向publications

因此,我将foo.com/bar/publications作为restful的一部分,并且它将是功能性的。

但是,如果我有一个像api-doc这样的静态内容(应该出现在foo.com/bar/api-doc上),那么它就被忽略了。

非rest也是如此,就像一个简单的java servlet.不是rest资源的斜杠之后的所有内容都会被忽略。

有什么方法可以让他们一起使用这个指向applicationPath"/",还是不可能呢?因为我在文件上找不到任何关于它的东西。我只想了解如何更好地利用它。

EN

回答 1

Stack Overflow用户

发布于 2017-11-02 07:59:23

可能与遇到这类问题的其他人有关。

听起来您有URL路径跟踪的情况。考虑一下您声明映射的顺序。

来自Servlet 3规范,第12.1节

使用第一个成功的匹配,不再尝试其他匹配:

  1. 容器将试图找到请求路径与servlet路径的完全匹配。成功的匹配选择servlet。
  2. 容器将递归地尝试匹配最长的路径前缀。这是通过使用“/”字符作为路径分隔符一次从路径树中逐出一个目录来完成的。最长的匹配决定选择的servlet。
  3. 如果URL路径中的最后一个段包含一个扩展(例如.jsp),servlet容器将尝试匹配一个处理扩展请求的servlet。扩展定义为最后一个‘.’之后的最后一个段的部分。性格。
  4. 本规范2.5之前的版本使用这些映射技术作为建议而不是需求,允许servlet容器各自有不同的方案将客户端请求映射到servlet。116 Java Servlet规范·2009年11月
  5. 如果前面的三条规则都没有导致servlet匹配,容器将尝试提供适合请求的资源的内容。如果为应用程序定义了“默认”servlet,则将使用它。许多容器为服务内容提供了隐式默认servlet。

或者,您可能在无意中将@ApplicationPath与servlet映射元素凌驾在web.xml中。

希望有些人会发现这是有用的。

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

https://stackoverflow.com/questions/40838428

复制
相关文章

相似问题

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