SPRING-SOURCE.RU | |
|
|
Для создания проекта мы воспользуемся услугами Maven, а в нем Scala archetype. Вот строка:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.2:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple -DarchetypeVersion=1.3 -DgroupId=myGroup -DartifactId=SpringScalaProject -Dversion=0.1.0 -DinteractiveMode=false
Затем, в директории проекта, пишем: mvn clean package
В этом уроке мы используем IntelliJIdea 12 версию. Запускаем программу и импортируем проект, как Maven. Поставьте галочку Import Maven project automatically и выберите process-test-resources.
Теперь осталось убедиться в том, что плагин Scala для IntelliJ работает корректно. Для этого открываем App класс и пишем в нем этот код:
object App { def main(args: Array[String]) { println( "Hello World!" ); } }
Запускаем наш проект: CTRL-SHIFT-F10
Давайте теперь настроим Scala на нужную версию, через pom.xml: <scala.version>2.9.1</scala.version>
<properties> <encoding>UTF-8</encoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <scala.version>2.9.1</scala.version> <org.springframework.version>3.1.0.RELEASE</org.springframework.version> </properties>
После любого изменения в программе лучше запускать проект и проверять его на работоспособность. Сделайте проверку и если все прошло успешно, удалите класс App.
Начнем править наш pom.xml
<repositories> <repository> <id>scala-tools.org</id> <name>Scala-Tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </repository> <repository> <id>com.springsource.repository.bundles.release</id> <name>EBR Spring Release Repository</name> <url>http://repository.springsource.com/maven/bundles/release</url> </repository> <repository> <id>com.springsource.repository.bundles.external</id> <name>EBR External Release Repository</name> <url>http://repository.springsource.com/maven/bundles/external</url> </repository> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
Добавляем зависимости:
<dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.transaction</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.orm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.web</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.web.servlet</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency>
И удаляем зависимость org.scala-tools.testing, junit, scalatest и убираем <goal>testCompile</goal>
Чтобы упростить приложение, мы настроим все последовательно и начнем конечно же с Spring Framework. Создадим контроллер HelloWorldController в пакете myGroup.spring.web:
@Controller class HelloWorldController { @RequestMapping(Array("/hello.html")) def showHello = "helloPage" }
Проверяем, что проект работает: mvn clean package
Далее, создадим директорию src/main/webapp/WEB-INF, а также файл web.xml с стандартным DispatcherServlet:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="ScalaTestProject" version="2.5"> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-context-web.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <filter> <!-- Allows the "_method" parameter to dictate the HTTP method --> <filter-name>methodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>methodFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Создадим файл spring-context-web.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <context:component-scan base-package="myGroup.spring.web"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
Потом создадим jsp страничку, которую нам будет возращать наш контроллер: src/main/webapp/WEB-INF/jsp/helloPage.jsp
<%@page contentType="text/html;"%> <html> <body> <h1>Hello from ${pageContext.request.serverName}</h1> </body> </html>
В конце добавим 'war' упаковку в наш pom.xml
<packaging>war</packaging>
Теперь снова заапускаем mvn clean install и смотрим, чтобы все работало.
Добавим Jetty в наш POM файл:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.0.4.v20111024</version> <configuration> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>9090</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> <stopKey>stopIt</stopKey> <stopPort>9191</stopPort> <reload>manual</reload> </configuration> <executions> <execution> <id>start-jetty-before-integration-tests</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> <daemon>true</daemon> </configuration> </execution> <execution> <id>stop-jetty-after-integration-tests</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin>
Запускаем наше приложение: mvn clean package jetty:run, заходим по адресу: http://localhost:9090/hello.html и получаем нашу jsp страницу Hello from localhost
Надеюсь все получилось, если возникли вопросы, пишите на email.
Copyright © 2024 |