如何发送请求使用AngularJS使用战争名称?

时间:2014-12-12 07:28:26

标签: java angularjs spring maven

我想发送请求:

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@;
}

1 个答案:

答案 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');