Вопрос
Например, у меня есть 3 шага регистрации, которые сопоставляются с URL-адресом "/ register". Возможно ли иметь только один RegisterController, который может обрабатывать все шаги регистрации при регистрации?
Предлагаемое решение:
Spring 3 - контроллер Spring-mvc, использующий отображение сервлета на ваш контроллер. Используя отображение в вашем URL-запросе, вы всегда будете переходить к одному и тому же контроллеру.
Вы можете создать отображение сервлета и сервлета, которое отображается на ваш контроллер через пружинный DispatcherServlet.
Создайте отображение сервлета и сервлета для обработки ваших запросов.
web.xml
<servlet>
<description>
</description>
<display-name>TestServ</display-name>
<servlet-name>main</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
Создать файл конфигурации пружины, связанный с сервлетом.
В этом случае, поскольку имя моего сервлета - test, это будет файл test-servlet.xml, который помещается в вашу папку WEB-INF в корне.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="/registration/*" class="register.ResgisterController"/>
Создайте свой класс контроллера для сопоставления ваших запросов.
package registration;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import registration.User;
@Controller
public final class RegistrationController {
public RosterController() {
}
//Spring lets you You can access your spring mvc model from the controller automatically
@RequestMapping
public void list(Model model) {
//do something
}
//Extract a registration id from the request and you can use in your model
@RequestMapping
public void member(@RequestParam("registrationId") Integer id, Model model) {
//do something
}
}