angularjs - [Angular, Jersey]为什么我必须使用 jersey 在 $http 中指定应用程序名称

标签 angularjs tomcat jersey

我想知道为什么我在调用 $http 时必须指定我的应用程序的名称。每次我在网上看到一个使用 jersey 和 angular 的例子时,他们都没有指定应用程序名称。

这是我必须写的才能让它工作:

$http({method: "POST", url: '/MyAppName/rest/service'})

这是我在网上看到的,但对我不起作用:

$http({method: "POST", url: '/rest/service'}) 

我的 web.xml 很常见:

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

我不想指定我的应用程序的名称。那么怎么办呢?

最佳答案

我相信您的网络应用程序部署在 Tomcat 或 Jetty 容器上。由于您可以在这样的容器上部署几个应用程序,因此每个应用程序的路径不能是您服务器的根目录 (/),而是与根目录相关的内容 - 在这些应用程序服务器中,它是您的应用程序的名称。

如果您的 .war 安装为某个名称下的 Web 应用程序,则对该应用程序的 REST 资源的所有请求都需要与该 Web 应用程序的名称相关:

enter image description here

在那种情况下,你有像

这样的路径
  • /经理/

  • /myWar/

这个问题可以通过在重写 URL 的应用服务器前面使用 apache httpd 或许多现有的之一来解决 rewrite filters用于 Tomcat。

另一种解决方案是将所有 REST 服务部署到一个名为 rest 的 .war 中,并将 HTML 和 JS 作为静态资源部署 and map the path to the static resources这样你就可以从根 url 中找到它们。就个人而言,我认为分离 java 类和 html 不值得,但这是您的选择。

关于angularjs - [Angular, Jersey]为什么我必须使用 jersey 在 $http 中指定应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801535/

相关文章:

tomcat - nsis 获取运行服务的端口号

rest - 实例化 servlet 类 org.glassfish.jersey.servlet.ServletContainer 时出错

java - 如何通过 REST (JAX-RS) 在 web.xml 中声明多个包?

javascript - 如何获取ng-repeat输入angularjs的值?

angularjs - md-datepicker 日期过滤器 : Send object from HTML to md-date-filter function

angularjs - 模块之间的 Angular 依赖关系

java - 您尝试访问的页面(/manager/projects)不存在-tomcat7下的intellij 13.1

java - 我应该如何初始化类 freemarker.template.Configuration?

java - 响应 header 未显示在 Google Chrome 中呈现的 swagger UI 中

javascript - Angular 1.2.24 : Testing directive throws undefined in scope. $摘要();