Давайте посмотрим, что является требованием нашего примера и как средство Spring MVC 3 Ajax выполнит его:
В нашем примере мы составим список студентов с именем и высшим уровнем образования, чтобы отправить этот список в офис по трудоустройству, чтобы студенты могли получить шанс. Мы предоставим студенту онлайн-форму «Добавить студенческую форму», чтобы он мог отправить свое имя онлайн и зарегистрироваться. Как многие студенты будут использовать систему, так и производительность системы может быть очень низкой. Для повышения производительности веб-приложения мы будем использовать Ajax с Spring MVC 3 Framework и JQuery.
Для реализации нашего примера мы должны пройти следующие шаги:
- Прежде всего, мы создадим класс домена (User.java), который будет содержать ценность информации об ученике.
- После этого мы создадим наш класс контроллера (UserListController.java) для обработки HTTP-запроса. Наш контроллер будет обрабатывать три типа запросов. Во-первых, чтобы показать «Добавить форму студента», во-вторых, чтобы обработать запрос Ajax, пришли из «Добавить форму студента» и добавить студентов в список, в-третьих, чтобы показать информацию о студентах в виде списка.
- Затем мы создадим страницу jsp (AddUser.jsp) для отображения «Добавить форму студента», которая будет использовать JQuery для отправки запроса Ajax в Spring MVC Controller. JSP также подтвердит пользователю, что студент был добавлен в список.
- Затем мы создадим jsp (ShowUsers.jsp), который будет перечислять всех пользователей в списке.
User.java
User.java имеет два свойства name и образования для хранения информации об ученике. Ниже приведен код User.java:
|
1
2
3
4
5
6
7
8
|
package com.raistudies.domain;public class User { private String name = null; private String education = null; // Getter and Setter are omitted for making the code short} |
UserListController.java
Контроллеры имеют три метода для обработки трех URL запросов. Метод showForm обрабатывает запрос на показ формы пользователю. Ниже показан код UserListController.java:
|
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
|
package com.raistudies.controllers;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.validation.BindingResult;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import com.raistudies.domain.User;@Controllerpublic class UserListController { private List<User> userList = new ArrayList<User>(); @RequestMapping(value="/AddUser.htm",method=RequestMethod.GET) public String showForm(){ return "AddUser"; } @RequestMapping(value="/AddUser.htm",method=RequestMethod.POST) public @ResponseBody String addUser(@ModelAttribute(value="user") User user, BindingResult result ){ String returnText; if(!result.hasErrors()){ userList.add(user); returnText = "User has been added to the list. Total number of users are " + userList.size(); }else{ returnText = "Sorry, an error has occur. User has not been added to list."; } return returnText; } @RequestMapping(value="/ShowUsers.htm") public String showUsers(ModelMap model){ model.addAttribute("Users", userList); return "ShowUsers"; }} |
«AddUsers» аналогичен методу контроллера, который обрабатывает форму, ожидая, что он также содержит аннотацию @ResponseBody , которая сообщает Spring MVC, что строка, возвращаемая методом, является ответом на запрос, ей не нужно искать представление для этой строки. Таким образом, возвращающая строка будет отправлена обратно в браузер как ответ, и, следовательно, будет работать запрос Ajax. Метод showUsers используется для отображения пользователю списка студентов.
AddUser.jsp
AddUser.jsp содержит простую форму для сбора информации об ученике и использует JQerey JavaScript Framework для генерации Ajax-запроса к серверу. Ниже приведен код в AddUser.jsp:
|
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
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Add Users using ajax</title> <script src="/AjaxWithSpringMVC2Annotations/js/jquery.js"></script> <script type="text/javascript"> function doAjaxPost() { // get the form values var name = $('#name').val(); var education = $('#education').val(); $.ajax({ type: "POST", url: "/AjaxWithSpringMVC2Annotations/AddUser.htm", data: "name=" + name + "&education=" + education, success: function(response){ // we have the response $('#info').html(response); $('#name').val(''); $('#education').val(''); }, error: function(e){ alert('Error: ' + e); } }); } </script> </head> <body> <h1>Add Users using Ajax ........</h1> <table> <tr><td>Enter your name : </td><td> <input type="text" id="name"><br/></td></tr> <tr><td>Education : </td><td> <input type="text" id="education"><br/></td></tr> <tr><td colspan="2"><input type="button" value="Add Users" onclick="doAjaxPost()"><br/></td></tr> <tr><td colspan="2"><div id="info" style="color: green;"></div></td></tr> </table> <a href="/AjaxWithSpringMVC2Annotations/ShowUsers.htm">Show All Users</a> </body></html> |
Вы можете быть немного смущены, если не знаете JQuery. Вот объяснение кода JQuery:
- var name = $ (‘# name’). val (); : — здесь $ — селектор JQuery, который используется для выбора любого узла в HTML, идентификатор которого передается в качестве аргумента. Если идентификатор является префиксом с #, это означает, что это идентификатор узла HTML. Здесь $ (‘# name’). Val () содержит значение HTML-узла, который является «name». Текстовое поле, в котором пользователь вводит свое имя, является именем. поэтому имя переменной java-скрипта будет содержать имя пользователя.
- $ .ajax () : — это метод в переменной $ JQuery для вызова Ajax. Здесь пять аргументов. Прежде всего « тип », который указывает тип запроса Ajax. Это может быть POST или GET. Затем « url », который указывает на URL, который должен быть получен при отправке Ajax. « Data » будет содержать необработанные данные для отправки на сервер. « Success » будет содержать код функции, который должен быть вызван, если запрос будет успешным и сервер отправит ответ браузеру. « Error » будет содержать код функции, который должен быть вызван, если запрос получит какую-либо ошибку.
- $ ( ‘# информация’) HTML (ответ). : — установит ответ сервера в div. Таким образом, «привет» + имя будет показано в div, идентификатор которого « info ».
ShowUsers.jsp
Ниже приведен код в ShowUsers.jsp для печати всей информации об ученике из ArrayList на странице jsp:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Users Added using Ajax</title> </head> <body style="color: green;"> The following are the users added in the list :<br> <ul> <c:forEach items="${Users}" var="user"> <li>Name : <c:out value="${user.name}" />; Education : <c:out value="${user.education}"/> </c:forEach> </ul> </body></html> |
Здесь мы использовали базовую taglib JSTL, чтобы перебрать ArrayList и показать каждое значение в браузере.
- <c: forEach items = ”$ {Users}” var = ”user”> : тег используется для итерации по списку ArrayList. Свойство «items» используется для определения bean-компонента, в котором был сохранен объект List, поэтому items = »$ {Users}» говорит, что список bean-компонентов присутствует в bean-компоненте «Users». Атрибут «var» сообщает имя переменной, в которой будет храниться каждый пользователь.
- <c: out value = ”$ {user.name}» /> : As, так как в переменной name «user» будет храниться один пользователь, поэтому для печати свойства name в объекте User мы используем $ {user.name}.
приложение-config.xml
Наш конфигурационный файл Spring MVC должен обрабатывать контроллеры, основанные на аннотациях. Конфигурация выглядит следующим образом:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?xml version="1.0" encoding="UTF-8"?>xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- Scans the classpath of this application for @Components to deploy as beans --> <context:component-scan base-package="com.raistudies" /> <!-- Configures the @Controller programming model --> <mvc:annotation-driven /> <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean></beans> |
Разверните файл war на tomcat 6 и нажмите на ссылку в браузере, вы увидите следующую страницу:
|
| Форма Ajax с использованием Spring MVC 3 |
Заполните информацию о студентах:
|
| Заполненная форма Ajax с использованием Spring MVC 3 |
После этого нажмите кнопку «Добавить пользователей», вы получите сообщение о том, что пользователь был добавлен в список:
|
| Ajax Подтверждение отправки формы Spring MVC 3 |
Чтобы показать всех учеников, добавленных в список, нажмите кнопку «Показать всех пользователей», вы увидите следующую страницу:
|
| Показать всех пользователей Spring MVC 3 |
Это все из Ajax, использующего Spring MVC 3 и JQuery. Вы можете скачать источник по ссылке ниже.
Источник: Скачать
Справка: Ajax с Spring MVC 3 с использованием аннотаций и JQuery от нашего партнера по JCG



