我想发送请求:
var response = $http({
method: "post",
url: "/Test/hello",
data: {
action:"action",
}
});
在哪里/Test/
- 我的战争名称。但如果我重命名战争,我将有一个错误。如何设置请求使用战争名称?
请注意。的的web.xml
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Spring控制器
@Controller
public class ProjectController {
@RequestMapping(method = RequestMethod.POST, value = "/hello")
@ResponseBody
public String hello(@RequestBody JSONObject request) {
return "hello@;
}
答案 0 :(得分:1)
这极大地说明了您的部署过程。
您指定的Servlet映射是在已部署的应用程序的路径之后添加的。它不指定应用程序服务器上的确切路径。
如果您在某个指定名称上部署应用程序(使用了战争名称),就会出现这种情况。 但是您可以自己指定它,我在服务器上部署单个应用程序以确保它在/
您的角度应用程序由特定URL上的资源servlet调度程序作为普通静态资产提供。
如果您坚持部署到各种名称,我建议使用相对路径。 Angular SPA应用程序在特定URL上运行,因此在其生命周期内不会更改。
因此,如果您将应用程序部署在/ Test并且hello REST控制器已打开/ Test / hello,则可以仅使用hello
作为URL
var response = $http({
method: "post",
url: "hello",
data: {
action:"action",
}
});
如果您仍希望拥有绝对网址,则可以在部署期间修改某些已定义的常量。 为此,我建议你在一些单独的配置中为基本URL定义常量。
angular('YourModule')
.constant('BASE_URL', '/Test');