Весенний MVC привет, пример мира

Spring MVC Привет, пример мира

Note
Это руководство основано на Spring 2.5.6, которая довольно устарела. Попробуйте рассмотреть новые уроки:

В этом уроке мы покажем вам веб-приложение Hello MVC Spring World.

Используемые технологии:

  1. Весна 2.5.6

  2. JDK 1.6

  3. Затмение 3.6

  4. Maven 3

1. MVC Basic

В веб-приложении Spring MVC оно состоит из 3 стандартных компонентов MVC (Model, Views, Controller):

  1. Модели - доменные объекты, которые обрабатываются сервисным уровнем (бизнес-логика) или постоянным уровнем (работа с базой данных).

  2. Представления - отображают данные, обычно это страницы JSP, написанные с помощью стандартной библиотеки тегов Java (JSTL).

  3. Контроллеры - отображение URL и взаимодействие с сервисным уровнем для бизнес-обработки и возврата модели.

На следующих рисунках показано, как веб-приложение Spring MVC обрабатывает веб-запрос.

Рисунок 1.1 - Изображение скопировано изSpring MVC reference с небольшими изменениями.

spring mvc concepts

Рисунок 1.2 - Изображение скопировано из этой книги:Spring Recipes_

spring-mvc-concepts-2

Note
В Spring MVC основным компонентом диспетчера являетсяDispatcherServlet, который действует как фронт-контроллер (шаблон проектирования). Каждый веб-запрос должен пройти через этотDispatcherServlet, иDispatcherServlet отправит веб-запрос подходящим обработчикам.

2. Структура каталогов

Стандартная структура каталогов проекта Maven.

spring2-mvc-hello-world

3. специалист

Объявляет зависимостьspring-webmvc, Maven поможет вам управлять транзитивными зависимостями автоматически (загрузите другие зависимости, которые требуютсяspring-webmvc, напримерspring-context илиspring-beans).

Если вы используете страницу JSP с технологией JSTL, включите также зависимостьjstl.

pom.xml


    4.0.0
    com.example.common
    spring2-mvc-xml-hello-world
    war
    1.0-SNAPSHOT
    Spring 2 MVC

    
        1.6
        2.5.6
        1.2
        2.5

    

    

        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            javax.servlet
            jstl
            ${jstl.version}
        

        
        
            javax.servlet
            servlet-api
            ${servletapi.version}
            provided
        

    

    

      
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.3
            
                ${jdk.version}
                ${jdk.version}
            
        

                
        
            org.eclipse.jetty
            jetty-maven-plugin
            9.2.11.v20150529
            
                10
                
                    /spring2
                
            
        

                
        
            org.apache.maven.plugins
            maven-eclipse-plugin
            2.9
            
                true
                true
                2.0
                spring2
            
        

      

    

4. Spring Controller

Spring поставляется со многими контроллерами, обычно вам просто нужно расширитьAbstractController и переопределить методhandleRequestInternal().

HelloWorldController.java

package com.example.common.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HelloWorldController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("HelloWorldPage");
        model.addObject("msg", "hello world");

        return model;
    }
}

4.1 ModelAndView(“HelloWorldPage”) – To identify which view should return back to the user, in this example HelloWorldPage.jsp will be returned.

4.2 model.addObject(“msg”, “hello world”) – Add a “hello world” string into a model named “msg”, later you can use EL ${msg} to display the “hello world” string.

5. Просмотр (страница JSP)

В этом случае «view» - это страница JSP, вы можете отобразить значение «hello world», которое хранится в модели «msg», с помощью языка выражений (EL) $ {msg}.

HelloWorldPage.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


    

Spring MVC Hello World Example

${msg}

Note
Если $ {msg} отображается как есть, а не значение внутри модели «msg», это может быть вызвано старым дескриптором JSP 1.2, из-за которого языки выражений по умолчанию отключены. см.solution здесь.

6. Конфигурация Spring XML

6.1 Declared the Spring Controller and viewResolver.

mvc-dispatcher-servlet.xml



    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

1. Controller - объявлено имя bean-компонента/welcome.htm и сопоставлено его сHelloWorldController. Это означает, что если запрашивается URL-адрес с шаблоном/welcome.htm, контроллерHelloWorldController обработает запрос.

2. viewResolver - Определите, как Spring будет искать шаблон представления. В этом случае контроллерHelloWorldController вернет представление с именемHelloWorldPage, viewResolver найдет файл с помощью следующего механизма:prefix + view name + suffix, то есть/WEB-INF/pages/HelloWorldPage.jsp.

Note
На самом деле вам не нужно определятьBeanNameUrlHandlerMapping вweb.xml, по умолчанию, если сопоставление обработчика не найдено, DispatcherServlet создастBeanNameUrlHandlerMapping (t4) автоматически. См. Эту статью -BeanNameUrlHandlerMapping example для подробностей.

6.2 In web.xml, declared a DispatcherServlet servlet to act as the front-controller to handle all the entire web request which end with htm extension.

web.xml



  Spring Web MVC Application

  
    mvc-dispatcher
        
             org.springframework.web.servlet.DispatcherServlet
        
        1
  

  
    mvc-dispatcher
        *.htm
  

Note
mvc-dispatcher используется для определения файла для загрузки конфигураций Spring XML. По умолчанию он будет искать XML-файл конфигурации Spring, объединив имя сервлетаmvc-dispatcher с-servlet.xml.

В этом примере Spring будет искать этот файл -mvc-dispatcher-servlet.xml.

7. Demo

7.1 To run this project with Maven :

$ mvn jetty:run

7.2 To run this project in Eclipse IDE, create Eclipse project settings with the following Maven command :

$ mvn eclipse:eclipse

Импортирует проект вручную и запускает с плагина сервера.

spring2-mvc-demo

Как это устроено?

  1. http://localhost:8080/spring2/welcome.htm запрашивается.

  2. URL заканчивается расширением «.htm», поэтому он будет перенаправлен на «DispatcherServlet» и отправит запросы к стандартному BeanNameUrlHandlerMapping.

  3. BeanNameUrlHandlerMapping возвращает HelloWorldController в DispatcherServlet.

  4. DispatcherServlet переслать запрос в HelloWorldController.

  5. HelloWorldController обрабатывает его и возвращает объект ModelAndView с именем представления «HelloWorldPage».

  6. DispatcherServlet получил ModelAndView и вызывает viewResolver для его обработки.

  7. viewResolver возвращает/WEB-INF/pages/HelloWorldPage.jsp обратно в DispatcherServlet.

  8. DispatcherServlet возвращает «HelloWorldPage.jsp» пользователю.

Скачать исходный код

Скачать -spring2-mvc-xml-hello-world.zip (14 КБ)

Рекомендации