Один из способов выучить новый программный язык или новую платформу — создать приложение Hello World или приложение CRUD, чтобы начать понимать технологию, жизненные циклы, зависимости, конфигурации и ограничения. Мне нужно было узнать о Spring MVC и Struts Tiles , старой библиотеке Struts, которая теперь является независимым проектом. Поэтому я разработал приложение CRUD для практики, чтобы понять, как работают Spring MVC и Struts Tiles.
Проект представляет собой CRUD мобильных моделей с двумя полями. Я просто объясню о Spring MVC и Struts Tiles . Другие части приложения не будут в центре внимания этого поста.
Проект соединяется через JDBC с тестовой инфраструктурой на уровне DAO и Controller, Maven для управления проектом и Spring Framework версии 3.0.3.RELEASE .
Я использовал Spring MVC для обработки запросов между пользовательским интерфейсом и контроллером для ссылки на объекты в веб-форме. Это подобно другим веб-фреймворкам MVC, облегчающим разработку с преимуществом полной интеграции с Spring Container, работающим со всеми преимуществами контейнера Spring.
Чтобы начать его настройку, необходимо сопоставить сервлет DispatcherServlet в файле web.xml в вашем проекте. Например:
<web-app>
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
На этапе развертывания сервлет ‘spring-mvc’
DispatcherServlet будет искать файл spring-mvc-servlet.xml ([Имя сервлета] -servlet.xml) внутри WEB-INF. В приведенном выше примере все запросы будут обрабатываться сервлетом ‘spring-mvc’
DispatcherServlet .
Что касается контроллеров, то в Spring есть специальные типы контроллеров, специфичные для форм, контроллеры на основе команд и т. Д. Чтобы определить класс в качестве контроллера, просто аннотируйте
@Controller, как в примере класса CelularController:
@Controller
public class CelularController {
Классы, аннотированные
@Controller , преобразуют класс в роль контроллера.
В этом классе CelularController имеет еще одну аннотацию под названием
@RequestMapping , где вы можете сопоставить запрос URL-адреса для доступа к определенному методу с помощью параметра «значение». Параметр «метод» используется для определения запроса метода (GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE). В классе CelularController есть пример:
@RequestMapping(value = "/cadastro/remove", method = RequestMethod.POST)
public String removerModelo(@RequestParam(value = "nome", required = true) String nome,
@ModelAttribute Celular celular, WebRequest request) throws Exception {
}
Есть еще одна аннотация под названием
@ModelAttribute . Когда вы определяете атрибут с помощью этой аннотации, Spring связывает параметры, поступающие из запроса (представления), с атрибутами объектов.
Волшебство происходит, когда вы создаете метод и устанавливаете аннотацию @InitBinder как:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
binder.setValidator((org.springframework.validation.Validator) this.validator);
}
Аннотация @InitBinder определяет метод, который инициализирует
класс WebDataBinder, который используется для привязки атрибутов, из формы (представления) к объекту с
аннотацией @ModelAttribute .
Чтобы Spring Container обнаружил классы, отображаемые с помощью
@Controller ,
@ModelAttribute или
@InitBinder , необходимо определить пакет этих классов в файле spring-mvc-servlet.xml. В примере:
<context:component-scan base-package="net.valdemarjr" scoped-proxy="targetClass" />
Для настройки
интеграции Struts Tiles с
Spring MVC необходимо определить два bean-компонента в файле spring-mvc-servlet.xml:
<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:viewClass="org.springframework.web.servlet.view.tiles2.TilesView" /> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" />
И возвращаемая строка в методах вашего контроллера отображается в файле tile.xml. Например в «processarFormulario». Метод возвращает «cadastro.formulario», который отображается как:
<definition name="cadastro.formulario" extends="titulo"> <put-attribute name="conteudo" value="/WEB-INF/jsp/cadastro/formulario.jsp" /> </definition>
И ответ будет перенаправлен в файл «formulario.jsp».
Впервые я использую
Spring MVC и
Struts Tiles вместе, и мне понравилось. Если вы хотите увидеть исходный код, проект находится на
github, и вы можете скачать, обновить и протестировать.
Извините за мой английский . Если у вас есть какие-либо вопросы,
свяжитесь со мной .