Статьи

Пример Spring MVC и Struts Tiles

Один из способов выучить новый программный язык или новую платформу — создать приложение 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, и вы можете скачать, обновить и протестировать.

Извините за мой английский . Если у вас есть какие-либо вопросы,
свяжитесь со мной .