我想知道为什么在我调用$ 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以某个名称作为Web应用程序安装,则对该应用程序的REST资源的所有请求都必须相对于该Webapp的名称:
在这种情况下,您的路径类似于
/经理/
/ myWar /
可以通过在应用程序服务器前使用apache httpd来重写URL或Tomcat的许多现有重写过滤器之一来解决此问题。
另一种解决方案是将所有REST服务部署到一个名为.war的.war中rest
,并将HTML和JS部署为静态资源,并将路径映射到静态资源,以便您可以从根url中获取它们。从个人的角度来看,我不认为将java类和html分开是值得的,但这是您的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句