Spring Framework MVCで簡単なWebアプリケーションを作成する

画像
この記事では、初心者のJava開発者に、人気のあるSpring Frameworkを使用して簡単なWebアプリケーションを作成する方法を伝えたいと思います。

アプリケーションを開発するときは、 Antユーティリティを使用してアクションを自動化し、 JUnitライブラリを使用して簡単なテストを作成する方法を学習します。 すべてのコードはEclipse IDEで作成されます。

この記事は、Spring MVC入門チュートリアルの最初の部分に基づいています。 有益に記事を読むには、Springの基本的な知識があれば十分です。

ようこそ:)


Springでアプリケーションを構成するには、いくつかの方法を使用できます。 最も一般的な方法は、構成をxmlファイル入れることです 。 これは、最初のリリース以来フレームワークで使用されている最も伝統的な方法でもあります。 Java 5での注釈の導入により、それらを使用してフレームワークをカスタマイズすることが可能になりました(バージョン2.5以降)。 この記事では、従来のXMLスタイルを使用します。

必要なツール



重要な注意:コードをコピーするときは、「ヘリンボーン」引用符を通常のものに置き換えてください。 これにより、エラーからコードを保存できます:)

1.プロジェクト構造の作成


インストールしたEclipseにSpring IDEプラグインをインストールします。 springapp springappプロジェクトを作成し、 warフォルダーを追加しましょう。
画像

2. index.jspを作成します


springapp / war / index.jsp
<html>
<head>
<title>例:: Springアプリケーション</ title>
</ head>
<本体>
<h1>例-Springアプリケーション</ h1>
<p>これは私のテストです。</ p>
</ body>
</ html>


warフォルダーにWEB-INFを作成し、その中に web.xmlを配置します。

springapp / war / WEB-INF / web.xml
<? xml バージョン = '1.0' エンコーディング = 'UTF-8' ?>
< web-app バージョン = '2.4'
xmlns = 'java.sun.com / xml / ns / j2ee'
xmlns:xsi = 'www.w3.org / 2001 / XMLSchema-instance'
xsi:schemaLocation = 'http://java.sun.com/xml/ns/j2ee
java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ' >
< ようこそファイルリスト >
< ようこそファイル >
index.jsp
< / / ようこそファイル >
< / welcome-file-list >
< / web-app >


3. Tomcatにアプリケーションをデプロイします


サーバーにアプリケーションをデプロイするために、Antスクリプトを使用します(Antの操作を開始するには、 Wikipediaでそれに関するメモを読んでください)。 スクリプトには、アプリケーションのコンパイル、ビルド、および移植の目標が含まれます。

springapp / build.xml
<? xml バージョン = '1.0' ?>
< プロジェクト = 'springapp' basedir = '。' デフォルト = 'usage' >
< プロパティ ファイル = 'build.properties' / >
< プロパティ = 'src.dir' = 'src' / >
< プロパティ = 'web.dir' = 'war' / >
< プロパティ = 'build.dir' = '$ {web.dir} / WEB-INF /クラス' / >
< プロパティ = 'name' = 'springapp' / >
< パス ID =「マスタークラスパス」 >
< fileset dir = '$ {web.dir} / WEB-INF / lib' >
< include name = '*。jar' / >
< / ファイルセット >
< !-サーブレットAPIクラスが必要です:- >
< !-* Tomcat 5/6ではservlet-api.jarを使用します- >
< !-*他のアプリサーバーの場合-ドキュメントを確認してください- >
< fileset dir = '$ {appserver.lib}' >
< include name = 'servlet * .jar' / >
< / ファイルセット >
< pathelement path = '$ {build.dir}' / >
< / パス >
< ターゲット = 'usage' >
< エコー メッセージ = '' / >
< エコー メッセージ = '$ {name}ビルドファイル' / >
< エコー メッセージ = '-----------------------------------' / >
< エコー メッセージ = '' / >
< エコー メッセージ = '使用可能なターゲットは次のとおりです:' / >
< エコー メッセージ = '' / >
< echo message = 'build- >アプリケーションのビルド' / >
< エコー メッセージ = 'デプロイ- >アプリケーションをディレクトリとしてデプロイ' / >
< echo message = 'deploywar- > WARファイルとしてアプリケーションをデプロイする' / >
< エコー メッセージ = '' / >
< / / ターゲット >
< ターゲット =「ビルド」 説明 =「メインソースツリーJavaファイルのコンパイル」 >
< mkdir dir = '$ {build.dir}' / >
< javac destdir = '$ {build.dir}' source = '1.5' target = '1.5' debug = 'true'
非推奨 = 'false' 最適化 = 'false' failonerror = 'true' >
< src path = '$ {src.dir}' / >
< classpath refid = 'master-classpath' / >
< / javac >
< / / ターゲット >
< ターゲット =「デプロイ」 依存 =「ビルド」 説明 =「アプリケーションのデプロイ」 >
< copy todir = '$ {deploy.path} / $ {name}' preservelastmodified = 'true' >
< fileset dir = '$ {web.dir}' >
< include name = '** / *。*' / >
< / ファイルセット >
< / コピー >
< / / ターゲット >
< ターゲット = 'deploywar' 依存する = 'build'
説明 =「アプリケーションをWARファイルとしてデプロイする」 >
< war destfile = '$ {name} .war' webxml = '$ {web.dir} /WEB-INF/web.xml' >
< fileset dir = '$ {web.dir}' >
< include name = '** / *。*' / >
< / ファイルセット >
< / 戦争 >
< copy todir = '$ {deploy.path}' preservelastastmodified = 'true' >
< fileset dir = '。' >
< include name = '*。war' / >
< / ファイルセット >
< / コピー >
< / / ターゲット >
< / プロジェクト >


springapp / build.properties
#springappを構築するためのAntプロパティ
appserver.home = C:/プログラムファイル/ Apache Software Foundation / Tomcat 6.0 /

#Tomcat 5の場合は$ appserver.home} / server / libを使用
#Tomcat 6の場合は$ appserver.home} / libを使用
appserver.lib = $ {appserver.home} / lib
deploy.path = $ {appserver.home} / webapps
tomcat.manager.url = http:// localhost:8080 / manager
tomcat.manager.username = tomcat
tomcat.manager.password = s3cret


appserver.home変数を正しく設定します。 私では、彼女はC:/ Program Files / Apache Software Foundation / Tomcat 6.0 /を指しています。

Tomcatユーザーを作成するは、 appserver.home / conf / tomcat-users.xmlファイルに次のように記述します。
<? xml バージョン = '1.0' エンコーディング = 'utf-8' ?>
< tomcat-users >
< ロール rolename = " manager " / >
< ユーザーユーザー = " tomcat " パスワード = " s3cret " ロール = " マネージャー " / >
< / tomcat-users >


ビルドスクリプトを実行します。build.xmlファイルのコンテキストメニュー>実行> Antビルド>ビルドの選択、[ターゲット]タブでターゲットをデプロイします。

4.アプリケーションの状態を確認します


Tomcatを起動して、 localhost:8080 / springapp /ページをブラウザーで開きます。
画像

5. Spring Frameworkをダウンロードする


フレームワークをまだダウンロードしていない場合はダウンロードし、解凍します。

これで、環境のセットアップが完了しました。 次に、Spring MVCでアプリケーション自体の構成を開始します。

6. WEB-INFフォルダーのweb.xmlを変更します


DispatcherServletサーブレットディスパッチャー( フロントコントローラーとも呼ばれます )を定義します。 その目的は、着信要求をディスパッチすることです。 このサーブレットのマッピングを行いましょう。 「 .htm 」という形式のURLを持つすべてのリクエストをサーブレットディスパッチャに送信することにしました。

springapp / war / WEB-INF / web.xml
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< web-app version = " 2.4 " xmlns = " java.sun.com/xml/ns/j2ee "
xmlns:xsi = " www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation = " java.sun.com/xml/ns/j2ee
java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
< サーブレット >
< サーブレット名 > springapp < / / サーブレット名 >
< サーブレットクラス > org.springframework.web.servlet.DispatcherServlet < / サーブレットクラス >
< 起動時のロード > 1 < / / 起動時のロード >
< / サーブレット >
< サーブレットマッピング >
< サーブレット名 > springapp < / / サーブレット名 >
< url-pattern > * .htm < / / url-pattern >
< / servlet-mapping >
< ようこそファイルリスト >
< ようこそファイル >
index.jsp
< / / ようこそファイル >
< / welcome-file-list >
< / web-app >


springapp-servlet.xmlファイルを作成します 。 このファイルには、DispatcherServletが使用するBean (Javaファイル)の説明が含まれています。 つまり、ファイルはサーブレットコンテキスト (WebApplicationContext)を定義します 。 Spring Web MVCの標準命名規則では、 springappサーブレットにはspringapp-servlet.xmlというbin記述ファイルがあります。

クラスspringapp.web.HelloControllerを使用して、Beanエントリの説明 「/hello.htm」を追加します。 このエントリは、アプリケーションがurl ' /hello.htm 'を使用して要求を処理するために使用するコントローラーを定義します 。 urlをそれを処理するオブジェクトにマップするために、Spring Web MVCフレームワークはHandlerMappingインターフェースを実装するクラスを使用します。 デフォルトでは、マッピングにはBeanNameUrlHandlerMappingクラスが使用されます。

DispatcherServletとは異なり、 HelloControllerは特定のページのリクエストを処理します。 「 ページコントローラー 」とも呼ばれます

springapp / war / WEB-INF / springapp-servlet.xml
  <?xml version = "1.0" encoding = "UTF-8"?> <br/>
 <beans xmlns = "http://www.springframework.org/schema/beans" <br />
	 xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" <br/>
	 xsi:schemaLocation = "http://www.springframework.org/schema/beans <br/>
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd "> <br/>
	 <!-springapp DispatcherServletのアプリケーションコンテキスト定義-> <br/>
	 <bean name = "/ hello.htm" class = "springapp.web.HelloController" /> <br/>
 </ beans> 


7.ライブラリを「WEB-INF / lib」にコピーします


war / WEB-INF / libディレクトリを作成し、必要なSpringライブラリをそのディレクトリにコピーします。


Eclipseプロジェクトに必要なライブラリを追加します。


8.コントローラーを作成する


springapp.webパッケージにHelloControllerコントローラーを作成します。

springapp / src / springapp / web / HelloController.java
パッケージ springapp.web;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;

パブリック クラス HelloController Controllerを実装します{
保護された 最終ログロガー= LogFactory.getLog(getClass());

パブリック ModelAndView handleRequest(HttpServletRequestリクエスト、
HttpServletResponse応答)ServletException、IOException {
logger.info( "ハロービューを返す" );
新しい ModelAndView( "hello.jsp" );
}
}


これは、コントローラーの非常に単純化された実装です。 将来的に拡張し、フレームワークのコントローラの既製の実装も使用します。

MVCモデルでは、コントローラーはリクエストを処理し、 Model-and-View (ModelAndView)-この場合はページ ' hello.jsp 'を返します。 Controllerが返すモデルは、実際にはViewResolverを介して解決されます。 ViewResolverを明示的に指定しなかったため、デフォルトのリゾルバーを使用します。これは、Model-and-Viewで指定されたリソースアドレスにリクエストを送信するだけです。 これは将来変更されます。

また、アプリケーションによって実行された作業を確認できるロガーを指定しました。 Tomcatを使用する場合、 catalina.outファイルでアプリケーションの操作ログを表示できます。このファイルは、 $ {Tomcat.home} / logにあります

9.コントローラーのテストを書きましょう


テストは、複雑なソフトウェアシステムの開発において最も重要な段階の1つです。 また、 アジャイルソフトウェア開発の基本的なプラクティスでもあります。 多くの人は、テストを書くのに最適な時期は開発後ではなく開発中だと考えています。 そのため、開発したコントローラーはシンプルですが、テストを作成します。

JunitライブラリーからTestCaseクラスを拡張するHelloControllerTestsテストを作成します。新規>その他> JUnit> JUnitテストケース。

これは単体テストです。 handleRequest()で返されたビュー名が、予想されるビュー ' hello.jsp 'と一致するかどうかを確認します。
画像

springapp / src / springapp / web / HelloControllerTests.java
パッケージ springapp.web;

import org.springframework.web.servlet.ModelAndView;
import springapp.web.HelloController;
import static org.junit.Assert。*;
import org.junit.Test;

パブリック クラス HelloControllerTests {

@テスト
public void testHandleRequestView() throws Exception {
HelloController controller = new HelloController();
ModelAndView modelAndView = controller.handleRequest( nullnull );
assertEquals( "hello.jsp" 、modelAndView.getViewName());
}
}


テストを実行するには、メニューから「実行」>「実行」>「JUnitテスト」を使用します。
試験結果:
画像

アジャイル開発のもう1つのプラクティスは、継続的インテグレーションです。 コードの正しい動作を確認するために、各ビルド(ビルド)でテストを実行することをお勧めします(理想的には、テストは各ビルドで自動的に実行されます)。

10.ビューを作成する


Viewを作成します 。 この例では、 hello.jsp JSPページになります。

springapp / war / hello.jsp
<html>
<head>
<title>こんにちは:: Springアプリケーション</ title>
</ head>
<本体>
<h1>こんにちは-Springアプリケーション</ h1>
<p>あいさつ</ p>
</ body>
</ html>


11.アプリケーションをサーバーにコンパイルしてデプロイします


build.xmlファイルの場合、 springapp \ war \ WEB-INF \ lib \ junit-4.4.jarライブラリーをClasspathに追加し、ビルドおよびデプロイの目標を実行します(build.xmlファイルのコンテキストメニュー> Run As> Ant Build ...> Targets、Classpath tabs )

12.アプリケーションを実行してみましょう


ブラウザーで、アドレスhttp:// localhost:8080 / springapp / hello.htmを入力します。
画像

13.まとめ


何が行われたかを簡単に見てみましょう。
  1. アプリケーションの開始ページはindex.jspです。 環境が正しくインストールされていることを確認します。 後で変更します。
  2. 対応するspringapp-servlet.xml記述ファイルを持つサーブレットマネージャー (DispatcherServletまたはFrontコントローラー)。
  3. 基本機能を備えたコントローラー (ページコントローラー)HelloController-Model-And-Viewを返すだけです。 モデルは現在空です。 モデルの完全な実装は将来行われます。
  4. ビュー名が予期したものと一致するかどうかを確認する HelloControllerTests コントローラーの単体テスト。
  5. アプリケーションのタイプ -hello.jsp。


以下はプロジェクトの構造であり、すべての指示に従った後でなければなりません。
画像

完成したEclipseプロジェクトはここからダウンロードできます

ご清聴ありがとうございました。 成功を祈っています!

Source: https://habr.com/ru/post/J83860/


All Articles