如何从html + angularjs页面调用Spring的控制器?

时间:2016-08-03 18:40:23

标签: java angularjs spring model-view-controller

我有2页,一个是.jsp,另一个是.html。两者都有两个文本框和一个按钮。在按钮上单击我正在使用angularjs调用post方法。但是当我使用.jsp页面时,它工作正常,但同样的事情不适用于.html。

这是我的Spring的控制器 -

@RequestMapping(value="/springAngularJS",method=RequestMethod.POST)
 public String addUser(@RequestBody User user)
   {
   System.out.println("Adding user dtl....");
   }

这是我的jsp页面 -

$http.post("springAngularJS",$scope.user).
  success(function(data, status, headers, config) {
      $scope.person = data;
  }).
  error(function(data, status, headers, config) {
      alert( "Exception details: " + JSON.stringify({data: data}));
  });

我的.html文件的代码也一样。但上面的工作正在起作用,但是当我处理.html时,它不是。 我还将添加我的XML文件详细信息 -

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/views/" />
      <property name="suffix" value=".jsp"/>
</bean>
<mvc:resources mapping="/views/**" location="/WEB-INF/views/" />

考虑我作为一个初学者,通过自我...面对挑战学习。任何人都有任何解决方案,请回答。

1 个答案:

答案 0 :(得分:0)

您的角度应用程序(前端)和您的Spring应用程序(后端)对彼此没有任何了解。但是,只要设置正确,他们就可以进行通信。 $ http.post()的第一个参数是一个URL。但是,你提供了'springAngularJS',它只是你想要击中的url的结尾。所以这需要修复。

例如,您的Spring应用程序很可能在您的localhost上运行,例如在端口8000上。因此,在此示例中,您的Spring应用程序将在http://localhost:8000处提供。可以将其视为Spring应用程序的基本URL。当你在Spring @RequestMapping(value="/springAngularJS",method=RequestMethod.POST)中使用以下注释时,你会说只要在http://locahost:8000/springAngularJS的服务器上使用正确的主体/有效负载发出POST请求,就会运行该方法。它基本上将'value'参数添加到我之前提到的基本URL上。

因此,从您的角度应用中,您需要点击http://locahost:8000/springAngularJS,而不仅仅是springAngularJS

总之,将$http.post("springAngularJS",$scope.user)更改为$http.post("http://locahost:8000/springAngularJS",$scope.user)(取决于您服务器的实际网址/端口)。

您还可以使用$ http.post的相对网址,假设您的服务器和您的ui是从同一网址/端口提供的,在这种情况下您只需执行$http.post("/springAngularJS",$scope.user)即可。请注意(相对)网址开头的斜杠。