加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angularjs调用java函数

发布时间:2020-12-17 18:07:54 所属栏目:安全 来源:网络整理
导读:我在JAVA和 angularjs中有一个简单的Web应用程序.用户可以将人员添加到应用程序并从mongo数据库中删除. 我的问题是,我不确切知道如何与java通信并调用Java函数.例如,如果我想在按钮单击后从我的数据库中删除一个人. 这是一些代码 persons.html a for-authent
我在JAVA和 angularjs中有一个简单的Web应用程序.用户可以将人员添加到应用程序并从mongo数据库中删除.

我的问题是,我不确切知道如何与java通信并调用Java函数.例如,如果我想在按钮单击后从我的数据库中删除一个人.

这是一些代码

persons.html

<a for-authenticated ng-click="remove(s.id)" href=""> <i
     class="pull-right glyphicon glyphicon-remove"></i>
</a>

app.js

var app = angular.module('conferenceApplication',[
'ngCookies','ngResource','ngSanitize','ngRoute','ui.bootstrap','angularFileUpload','ngQuickDate']);


 app.config(function ($routeProvider) {
    $routeProvider
      .when('/home',{
           templateUrl: '/partials/home.html',controller: 'HomeCtrl'
      })
      .when('/speakers',{
          templateUrl: '/partials/person-list.html',controller: 'PersonListCtrl'
      })
});
app.controller('PersonListCtrl',function ($scope,$http,$modal,$log,$route,PersonService) {
$scope.remove = function(id) {
    var deletedPerson = id ? PersonService.remove(id,function(resp){
        deletedPerson = resp;
    }) : {};
};
}

PersonService.js

app.service('PersonService',function ($log,$upload,PersonResource) {
this.getById = function (id,callback) {
    return PersonResource.get({personId: id},callback);
};
this.remove = function(id,callback) {
    return PersonResource.deleteObject({PersonId: id},callback);
}
}

PersonResource.js

app.factory('PersonResource',function ($resource) {
return $resource('rest/person/:personId',{
        personId: '@personId'
    },{
        'update': { method: 'PUT' }
    })

});

我也有一个java类,我想从数据库中删除此人

PersonResource.java

@Controller
 @RequestMapping("/person")
   public class PersonResource {

     @Autowired
     private PersonService personService;

     @RequestMapping(method = RequestMethod.GET,value = "/{id}")
     public ResponseEntity<Person> deleteObject(@RequestBody Person id) {
        Person person = personService.findById(id);
        personService.deleteObject(id);
        return new ResponseEntity<Person>(person,HttpStatus.ACCEPTED);
     }
   }

PersonRepository

@Override
  public void deleteObject(String id) {
      getTemplate().remove(new Query(Criteria.where("id").is(id)),Person.class);
  }

getTemplate()返回MongoTemplate.

任何人都可以告诉我,我的错误是从数据库中删除我的条目吗?

解决方法

因此,使用GET方法通常,当我们获取一些数据,如果我们希望将一些数据发送到服务器(例如,一个ID为将要删除的人),我们使用POST方法或DELETE方法,在我的例子,我将使用POST方法简化. Angular和java通过RESTFUL服务(JAX-RS)进行通信,你无法在角度js中调用java函数或反之亦然.我将展示获取数据和发送数据的简单示例(获取所有人,删除具有给定ID的人).

以下是您可以开始学习的示例:

Java人员控制器

@Controller
@RequestMapping(value = "/person")
public class PersonController{

    private final PersonService personService;

    @Autowired
    public PersonController(final PersonService personService) {
        this.personService= personService;
    }

    @RequestMapping(value = "/",method = { RequestMethod.GET })
    @ResponseBody
    public List<Person> getPersons() {
        return personService.getPersons();
    }
    @RequestMapping(value = "/delete/{personId}",method = { RequestMethod.POST})
    @ResponseBody
    public HttpStatus deletePerson(@PathVariable final long personId) {
        return personService.deletePerson(personId);
    }
}

Java人员服务

public class PersonService{

    private final PersonRepository personRepository;

    @Autowired
    public PersonService(final PersonRepository personRepository) {
       this.personRepository= personRepository;
    }

    public List<Person> getPersons() {
        return personRepository.findAll();;
    }

   public HttpStatus deletePerson(final long id) {
       if (id > 0) {
           personRepository.delete(id);
           return HttpStatus.OK;
       } else {
           return HttpStatus.INTERNAL_SERVER_ERROR;
       }
   }
}

Java Person Repository

public interface PersonRepository{
      public void delete(int personId);

      public List<Person> findAll();
}

Angular app.js

(function() {
    var app = angular.module('personApp',[]);

    app.controller('personCtrl',function($scope,$http){

        $scope.getPersons = function(){
            $http.get('person/').success(function(response){
                $scope.allPersons = response.data;
            }).error(function(){
               //handle error
            })
        };

        $scope.deletePerson = function(personId){
            $http.delete('person/'+personId).success(function(response){
                $scope.deleteResponseStatus = response.status;
            }).error(function(){
               //handle error
            })
        }
    })
})();

HTML

<html ng-app="personApp">
   <body ng-controller=""personCtr>
      <input type="submit" ng-click="getPersons()"/>
      <input type="submit" ng-click="deletePerson(somePersonIdFromTableOrSomething)"
   </body>
</html>

希望它会有所帮助,没有经过测试,但一般来说就是对带有人员ID的控制器的flow..send请求,在数据库中找到并删除它

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读