[Angular, Jersey]为什么我必须使用 jersey 在 $http 中指定应用程序名称
[Angular, Jersey]Why i have to specify the application name in $http using 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>
我不想指定我的应用程序的名称。那怎么办呢?
我认为您的 Web 应用程序部署在 Tomcat 或 Jetty 容器上。由于您可以在这样的容器上部署几个应用程序,因此每个应用程序的路径不能是您服务器的根目录 (/),而是与根目录相关的东西 - 在那些应用程序服务器中,它是您的应用程序的名称。
如果您的 .war 安装为某个名称下的网络应用程序,则对该应用程序的 REST 资源的所有请求都需要与该网络应用程序的名称相关:
在那种情况下,你有像
这样的路径
/经理/
/myWar/
可以通过在重写 URL 的应用服务器前面使用 apache httpd 或 Tomcat 的许多现有 rewrite filters 之一来解决此问题。
另一种解决方案是将所有 REST 服务部署到一个名为 rest
的 war 中,并将 HTML 和 JS 作为静态资源 and map the path to the static resources 以便您可以访问他们来自根 url。就个人而言,我不认为将 java 类 和 html 分开是值得的,但这是您的选择。
我想知道为什么我在调用 $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>
我不想指定我的应用程序的名称。那怎么办呢?
我认为您的 Web 应用程序部署在 Tomcat 或 Jetty 容器上。由于您可以在这样的容器上部署几个应用程序,因此每个应用程序的路径不能是您服务器的根目录 (/),而是与根目录相关的东西 - 在那些应用程序服务器中,它是您的应用程序的名称。
如果您的 .war 安装为某个名称下的网络应用程序,则对该应用程序的 REST 资源的所有请求都需要与该网络应用程序的名称相关:
在那种情况下,你有像
这样的路径/经理/
/myWar/
可以通过在重写 URL 的应用服务器前面使用 apache httpd 或 Tomcat 的许多现有 rewrite filters 之一来解决此问题。
另一种解决方案是将所有 REST 服务部署到一个名为 rest
的 war 中,并将 HTML 和 JS 作为静态资源 and map the path to the static resources 以便您可以访问他们来自根 url。就个人而言,我不认为将 java 类 和 html 分开是值得的,但这是您的选择。