Я новичок в Spring-MVC, и меня смущает механизм установки свойства объекта и механизм передачи объекта между запросами. Так что это пример.
У меня есть класс с именем Person
для хранения информации с двумя полями name и age. И у меня есть класс контроллера с именем PersonController
ниже.
@Controller
public class PersonController {
@RequestMapping("/home")
public ModelAndView enterInfo() {
return new ModelAndView("home", "command",new Person());
}
@RequestMapping("/next")
public String getInfo(Person per, Model md) {
md.addAttribute("name", per.getName());
md.addAttribute("age", per.getAge());
return "next";
}
}
Первый метод enterInfo()
возвращает объект ModelAndView
, который ссылается на представление с именем "home", а также создает новый пустой объект Person
. А это мой home.jsp
файл:
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<form action = "next">
Name: <input type = "text" name = "name"/><br><br>
Age: <input type = "text" name = "age"/><br><br>
<input type = "submit" value = "submit"/>
</form>
</body>
</html>
Поэтому, когда я нажимаю кнопку «отправить», Spring сопоставляется с @RequestMapping("/next")
, который является аннотированным методом getInfo()
. Этот метод возвращает представление «next», которое показывает информацию об объекте person.
Проект работает очень хорошо, но я не знаю, как Spring может запустить его без ошибок. В обоих методах класса контроллера у меня нет методов настройки. А также в методе getInfo()
как Spring получает именно тот объект Person, который я только что создал? Я думаю, что без аннотации, такой как @ModelAttribure
или @SessionAttribute
, метод getInfo()
не может получить объект Person
, и поэтому он будет нулевым. Но в этом примере он все же может получить информацию. Так кто-нибудь может объяснить мне об этом механизме?