В этой статье я хочу вам показать, как реализовать MVC приложение используя Spring framework, а точней Spring MVC.
MVC (Model-view-controller, «Модель-представление-поведение», «Модель-представление-контроллер») — схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения,пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.
Добавим теперь в pom.xml dependency:
<properties> <spring.version>3.0.5.RELEASE</spring.version> </properties> <dependencies> <!-- Spring 3 dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> </dependencies>
Controller & Mapping
В Spring 3, аннотация широко применяется всюду. @RequestMapping
доступен, начиная с версии 2.5, но теперь расширены для поддержки URL-адреса REST стиль в Spring MVC.
package com.devcolibri.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/welcome") public class HelloController { @RequestMapping(method = RequestMethod.GET) public String printWelcome(ModelMap model) { model.addAttribute("message", "Spring 3 MVC - Hello World"); return "hello"; } }
JSP Страница
Страница JSP для отображения значения передаваемого через контроллер.
<html> <body> <h1>Message : ${message}</h1> </body> </html>
Spring Configuration
В Spring 3, вам нужно включить “auto component scanning” (для контроллера) и установить “view resolver” вручную.
Файл : mvc-dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.devcolibri.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/pages/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
<context:component-scan base-package="com.devcolibri.common.controller" />
тут мы говорим spring, что искать контроллеры он должен в указанном пакете.
<value>/WEB-INF/pages/</value>
тут мы говорим spring, что все views(виды) будут лежать в WEB-INF/page
<value>.jsp</value>
и указываем что все views будут иметь расширение jsp. Обратите внимание, что это расширение будет после того как контроллер задеспачит view.
Интеграция web-приложений с Spring
Интеграция ничем не отличается, если сравнивать со старыми Spring 2.5, просто устанавливает Spring "ContextLoaderListener"
и "DispatcherServlet"
.
Файл: web.xml
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application</display-name> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
Demo
URL : http://localhost:8080/[name project]/welcome
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
17 комментариев к статье "Spring 3. MVC - Hello world"
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
спасибо!
спасибо. если можно – добавьте перед содержимым файлов, собственно, их имена. А то не сразу разберёшь, в какой файл дописывать…
Этот урок обязательно нужно адаптировать для новичков. Сейчас же можно только скачать и потрогать. Как я понимаю весь проект собирается в war, а она уже потом деплоится в tomcat. Если же это просто перевод, тогда непонятно можно и так оставить. Потому что у mkyong есть более информативная статья где пошагово создается проект в eclipse.
Под новичков планируется серия видеоуроков по этой теме.
Ваши планы реализовались? Серия видеоуроков по данной теме?
Это расширение будет после того как контроллер задеспачит view. Что значит задеспачит?
Это значит, что контроллер проинициализируют все параметры в объект диспатчер и перенаправит его на jsp страницу откуда и можно будет получить данные с конролллера.
спасибо
если делать все точно как опысано выше, то при сборке мавеном получаю ошибку No mapping found for HTTP request with URI [/] in DispatcherServlet with name ”
а если @RequestMapping(“/welcome”) заменить на @RequestMapping(“/”) то все успешно собирается и работает
подскажите где я туплю?
alex, спасибо!!!!!!!!
Скачал проект, но почему-то окно пустое по адресу http://localhost:8080/SpringMVC/welcome
Мавент компилит без ошибок, деплоил по другому примеру с этого сайта
Пустое или 404 not found? На сервере приложение есть в списке загруженных?
А вы не знаете случайно каким образом работает InternalResourceViewResolver как он собственно резолвит Views? Может ссылка или книга есть, где это можно почитать.
Еще можно так https://github.com/pakitowka/SpringMVCHelloWorld.git
Не используя файлы с .xml конфигурацией, как говорится читсой джавой.
спасибо за статью!
В браузере пишет страница не найдена,меняю адреса ничего
JavaConfig лучше xml, а Spring Boot лучше JavaConfig.