2016-10-27 3 views
0

Я делаю SPA, используя AngularJS весной 4 с Hibernate 5. Я не могу отправить запрос от контроллера AngularJS на контроллер Spring.Как отправить запрос от контроллера AngularJS на контроллер Spring?

Выполнение вперёд внутрь функции submit() успешно, но это терпит неудачу.

ошибка показывает в консоли браузера:

POST http://localhost:8050/Spring_Hibernate_MVC/Views/registerStudent 404 (Not Found) 

моя структура проекта, как показано ниже.

Spring_Hibernate_MVC 
=src 
-com->karmesh->mvcApp->controller->register->RegisterController.java 
=WebContent 
-js->app->RegisterController.js 
-Views->Register.html 

Register.html

<div id="DivRegisterMain" ng-controller="RegisterController as ctrl"> 

    <form name="myForm" novalidate> 
    : 
    : 
    : 
    <input type="submit" value="Submit" ng-click="submit()" ><br> 
</form> 
</div> 

app.js

var routeApp=angular.module("RouteApp",['ngRoute']); 

RegisterController.js

routeApp.controller("RegisterController", function($scope, $http) { 
:::://some code is here 
$scope.submit = function() { 

     var req = { 
       method: 'POST', 
       url: '/registerStudent',    
       data: $scope.studentList 
       }; 

     $http(req). 
     then(function(response){ 
      console.log(response.status); 
      console.log("in success"); 
      $scope.studentList=[]; 
     }, function(response){ 
      console.log(response.status); 
      console.log("in fail");  
     }); 
    }; 
}); 

web.xml

<servlet> 
     <servlet-name>springServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>springServlet</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

RegisterController.java

@RestController 
@RequestMapping("/") 
public class RegisterController { 

    @Autowired 
    private RegisterService registerService; 


    @RequestMapping(value="/registerStudent", method = RequestMethod.POST) 
    public ResponseEntity<RegisterDTO> registerStudent(@RequestBody List<RegisterDTO> stdList) {  


     if (registerService.isStudentExist(stdList)) { 
      return new ResponseEntity<RegisterDTO>(HttpStatus.CREATED); 
     } 

     return new ResponseEntity<RegisterDTO>(HttpStatus.CONFLICT); 

    } 
} 

ответ

0

[EDIT добавление ".do", изменяя метод возврата, добавив параметр проверки]

Вы запрашиваете неправильный URL.

Заменить

http://localhost:8050/Spring_Hibernate_MVC/Views/registerStudent 

С

http://localhost:8050/Spring_Hibernate_MVC/registerStudent.do //notice I removed /views/ and added .do 

Если даже второй один не работает, попробуйте

http://localhost:8050/springServlet/registerStudent.do 

Так что в вашем угловой контроллер изменить URL, чтобы быть как ниже

var req = { 
     method: 'POST', 
     url: 'http://localhost:8050/Spring_Hibernate_MVC/registerStudent.do',//notice the .do at the end ro try http://localhost:8050/springServlet/registerStudent.do    
     data: $scope.studentList 
}; 

RegisterController

@Controller //LOOK here 
@RequestMapping("/") 
public class RegisterController { 

    @Autowired 
    private RegisterService registerService; 

    @ResponseBody //LOOK here 
    @RequestMapping(value="/registerStudent", method = RequestMethod.POST) 
    public boolean registerStudent(@RequestBody List<RegisterDTO> stdList) {  
     if (stdList != null) { //check if the object received is not null 
     //store your stdList somehow 
     } 
     return registerService.isStudentExist(stdList); 
    } 
} 

Ваш AngularController

$scope.submit = function() { 
var req = { 
     method: 'POST', 
     url: 'http://localhost:8050/Spring_Hibernate_MVC/registerStudent.do',    
     data: $scope.studentList 
}; 

$http(req).then(function(response){ 
    console.log(response); // prints true or false 
    if (response) 
     console.log("in success"); 
    else 
     console.log("in fail"); 
    $scope.studentList=[]; 
    }, function(error){ 
    console.log("in fail");  
    }); 
}; 

});

+0

это не работает, ошибка: angular.js: 12011 POST http: // localhost: 8050/Spring_Hibernate_MVC/registerStudent 404 (не найдено) –

+0

@ KarmeshMadhavi Я обновил свое решение, я добавил .do в конце вашего URL – Mitchapp

+0

теперь я получаю еще одну ошибку, Неподдерживаемый тип материала 415 ...... Тип контента 'application/json; charset = UTF-8' не поддерживается ......что это –

Смежные вопросы