Сначала нам необходимо создать самое простое приложение. Сделаем это командой

mvn archetype:create -DgroupId=ru.vaniashev -DartifactId=mb

Для работы с проектом в eclipse, выполним команду mvn eclipse:eclipse и импортируем проект.

Теперь мы имеем файл pom.xml и некоторую структуру папок. В директории src создадим папку webapp, для файлов конфигурации и jsp. В этой папке создадим директорию WEB-INF, с файлом web.xml, в котором необходимо описать DispatcherServlet:


XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5.     version="2.5">
  6.  
  7.     <servlet>
  8.         <servlet-name>dispatcher</servlet-name>
  9.         <servlet-class>
  10.             org.springframework.web.servlet.DispatcherServlet
  11.         </servlet-class>
  12.     </servlet>
  13.  
  14.     <servlet-mapping>
  15.         <servlet-name>dispatcher</servlet-name>
  16.         <url-pattern>*.html</url-pattern>
  17.     </servlet-mapping>
  18.  
  19. </web-app>


Теперь создадим простой контроллер и jsp-страницу. Jsp будем сохранять в /WEB-INF/jsp. Исходный код jsp-страницы hello.jsp:



HTML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
  3.     <jsp:directive.page contentType="text/html;charset=UTF-8" />
  4.     <html>
  5.         <head>
  6.             <title>Hello world!</title>
  7.         </head>
  8.         <body>
  9.             ${message}
  10.         </body>
  11.     </html>
  12. </jsp:root>

В большинстве случаев, используют библиотеку jstl, благодаря которой код jsp-страницы становится более структурированным и удобным для чтения. Также библиотека jstl содержит ряд полезных функций. Узнайте больше об использовани jstl... Также советую использовать библиотеку sitemash, для работы с шаблонами страниц.

Для того, чтобы мы могли использовать эту страницу, необходимо создать документ /WEB-INF/dispatcher-servlet.xml В нем выполняется конфигурация приложения. В первую очередь нам необходимо указать spring, где находятся наши jsp-страницы. Для этого опишем бин viewResolver. Также незабудем описать наш контроллер. Добавим в dispatcher-servlet.xml следующие строки:


XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
  3.  
  4. <beans>
  5.     <bean name="/index.html" class="ru.vaniashev.HelloController"/>
  6.     <bean id="viewResolver"
  7.         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  8.         <property name="prefix" value="/WEB-INF/jsp/" />
  9.         <property name="suffix" value=".jsp" />
  10.     </bean>
  11. </beans>

Теперь мы можем заняться нашим контроллером. Его код:


JAVA:
  1. package ru.vaniashev;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import org.springframework.web.servlet.ModelAndView;
  5. import org.springframework.web.servlet.mvc.AbstractController;
  6. public class HelloController extends AbstractController{
  7.     @Override
  8.     protected ModelAndView handleRequestInternal(HttpServletRequest request,
  9.             HttpServletResponse response) throws Exception {
  10.         return new ModelAndView("hello", "message", "Hello, world!");
  11.     }
  12. }

В этом листинге представлено классическое определение контроллера. В версии Spring 2.5 появилась возможность определять контроллеры с помощью аннотаций.

Теперь приложение полностью готово!

Следует отметить, что для сборки приложения в pom.xml должны быть включены некоторые зависимости. pom.xml:


XML:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <groupId>ru.vaniashev</groupId>
  6.     <artifactId>mb</artifactId>
  7.     <packaging>war</packaging>
  8.     <version>1.0-SNAPSHOT</version>
  9.     <name>mb</name>
  10.     <url>http://maven.apache.org</url>
  11.  
  12.     <build>
  13.         <finalName>mb</finalName>
  14.         <defaultGoal>install</defaultGoal>
  15.         <directory>${basedir}/target</directory>
  16.         <plugins>
  17.             <plugin>
  18.                 <groupId>org.apache.maven.plugins</groupId>
  19.                 <artifactId>maven-war-plugin</artifactId>
  20.                 <version>2.0</version>
  21.                 <configuration>
  22.                     <webResources>
  23.                         <resource>
  24.                             <directory>src/webapp</directory>
  25.                         </resource>
  26.                     </webResources>
  27.                 </configuration>
  28.             </plugin>
  29.         </plugins>
  30.         <pluginManagement>
  31.             <plugins>
  32.                 <plugin>
  33.                     <groupId>org.apache.maven.plugins</groupId>
  34.                     <artifactId>maven-compiler-plugin</artifactId>
  35.                     <version>RELEASE</version>
  36.                     <configuration>
  37.                         <source>1.6</source>
  38.                         <target>1.6</target>
  39.                         <encoding>UTF-8</encoding>
  40.                     </configuration>
  41.                 </plugin>
  42.             </plugins>
  43.         </pluginManagement>
  44.     </build>
  45.  
  46.     <dependencies>
  47.         <dependency>
  48.             <groupId>org.springframework</groupId>
  49.             <artifactId>spring</artifactId>
  50.             <version>2.5.3</version>
  51.         </dependency>
  52.         <dependency>
  53.             <groupId>org.springframework</groupId>
  54.             <artifactId>spring-webmvc</artifactId>
  55.             <version>2.5</version>
  56.         </dependency>
  57.         <dependency>
  58.             <groupId>javax.servlet</groupId>
  59.             <artifactId>jsp-api</artifactId>
  60.             <version>2.0</version>
  61.             <scope>provided</scope>
  62.         </dependency>
  63.         <dependency>
  64.             <groupId>javax.servlet</groupId>
  65.             <artifactId>servlet-api</artifactId>
  66.             <version>2.4</version>
  67.             <scope>provided</scope>
  68.         </dependency>
  69.     </dependencies>
  70. </project>

Работу с зависимостями можно очень сильно облегчить, используя плагин "Maven integration for Eclipse". Кроме того этот плагин позволяет пересобирать приложение, запускать тесты и выполнять другие действия из среды Eclipse.

Связанные записи