Spring 3. MVC – Hello world – Devcolibri

Spring 3. MVC – Hello world

В этой статье я хочу вам показать, как реализовать  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

Ресурс: http://www.mkyong.com

ПОХОЖИЕ ПУБЛИКАЦИИ

55605
07/11/2012

17 комментариев к статье "Spring 3. MVC - Hello world"

  1. спасибо. если можно – добавьте перед содержимым файлов, собственно, их имена. А то не сразу разберёшь, в какой файл дописывать…

  2. Этот урок обязательно нужно адаптировать для новичков. Сейчас же можно только скачать и потрогать. Как я понимаю весь проект собирается в war, а она уже потом деплоится в tomcat. Если же это просто перевод, тогда непонятно можно и так оставить. Потому что у mkyong есть более информативная статья где пошагово создается проект в eclipse.

  3. Это расширение будет после того как контроллер задеспачит view. Что значит задеспачит?

  4. если делать все точно как опысано выше, то при сборке мавеном получаю ошибку No mapping found for HTTP request with URI [/] in DispatcherServlet with name ”
    а если @RequestMapping(“/welcome”) заменить на @RequestMapping(“/”) то все успешно собирается и работает
    подскажите где я туплю?

  5. Скачал проект, но почему-то окно пустое по адресу http://localhost:8080/SpringMVC/welcome
    Мавент компилит без ошибок, деплоил по другому примеру с этого сайта

  6. А вы не знаете случайно каким образом работает InternalResourceViewResolver как он собственно резолвит Views? Может ссылка или книга есть, где это можно почитать.

  7. Еще можно так https://github.com/pakitowka/SpringMVCHelloWorld.git
    Не используя файлы с .xml конфигурацией, как говорится читсой джавой.

  8. спасибо за статью!

  9. В браузере пишет страница не найдена,меняю адреса ничего

  10. JavaConfig лучше xml, а Spring Boot лучше JavaConfig.

Добавить комментарий