Статьи

Spring MVC REST звонит с помощью Ajax

В этом посте приведен простой пример вызовов REST для веб-приложения Spring MVC. Он основан на примере обслуживания статических ресурсов с помощью Spring MVC и выборки JSON с помощью Ajax In Spring MVC Context . Код доступен на GitHub в каталоге Spring-REST-With-Ajax.

Главная страница

Наша главная страница содержит четыре кнопки, связанные с функциями Javascript, выполняющими вызовы Ajax:

1
2
3
4
5
6
7
8
9
...
<body>
<h1>Welcome To REST With Ajax !!!</h1>
<button type='button' onclick='RestGet()'>GET</button>
<button type='button' onclick='RestPut()'>PUT</button>
<button type='button' onclick='RestPost()'>POST</button>
<button type='button' onclick='RestDelete()'>DELETE</button>
</body>
...

Javascript

Наш файл Javascript содержит четыре функции:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var prefix = '/spring-rest-with-ajax';
 
var RestGet = function() {
        $.ajax({
        type: 'GET',
        url:  prefix + '/MyData/' + Date.now(),
        dataType: 'json',
        async: true,
        success: function(result) {
            alert('At ' + result.time
                + ': ' + result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
   });
}
 
var RestPut = function() {
 
    var JSONObject= {
        'time': Date.now(),
        'message': 'User PUT call !!!'
    };
 
    $.ajax({
        type: 'PUT',
        url:  prefix + '/MyData',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(JSONObject),
        dataType: 'json',
        async: true,
        success: function(result) {
            alert('At ' + result.time
                + ': ' + result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
    });
}
 
var RestPost = function() {
        $.ajax({
        type: 'POST',
        url:  prefix + '/MyData',
        dataType: 'json',
        async: true,
        success: function(result) {
            alert('At ' + result.time
                + ': ' + result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
    });
}
 
var RestDelete = function() {
        $.ajax({
        type: 'DELETE',
        url:  prefix + '/MyData/' + Date.now(),
        dataType: 'json',
        async: true,
        success: function(result) {
            alert('At ' + result.time
                + ': ' + result.message);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(jqXHR.status + ' ' + jqXHR.responseText);
        }
    });
}

контроллер

Наш контроллер захватывает вызовы REST и возвращает JSON. В реальных приложениях можно выполнять операции CRUD, а не возвращать JSON:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Controller
@RequestMapping(value = '/MyData')
public class MyRESTController {
 
    @RequestMapping(value='/{time}', method = RequestMethod.GET)
    public @ResponseBody MyData getMyData(
            @PathVariable long time) {
 
        return new MyData(time, 'REST GET Call !!!');
    }
 
    @RequestMapping(method = RequestMethod.PUT)
    public @ResponseBody MyData putMyData(
            @RequestBody MyData md) {
 
        return md;
    }
 
    @RequestMapping(method = RequestMethod.POST)
    public @ResponseBody MyData postMyData() {
 
 return new MyData(System.currentTimeMillis(),
            'REST POST Call !!!');
    }
 
    @RequestMapping(value='/{time}', method = RequestMethod.DELETE)
    public @ResponseBody MyData deleteMyData(
            @PathVariable long time) {
 
        return new MyData(time, 'REST DELETE Call !!!');
    }
}

Запуск примера

После компиляции пример можно запустить с помощью mvn tomcat: run. Затем просмотрите:

HTTP: // локальный: 8585 / весна-остальное-с-Аякса /

Главная страница будет отображаться:

Если вы нажмете на любую кнопку, появится всплывающее окно:

Смотрите здесь для получения дополнительной информации о REST • Больше сообщений, связанных с Spring здесь .

Ссылка: Spring MVC REST Calls With Ajax от нашего партнера JCG Джерома Версринга в блоге Технических заметок .