Help us understand the problem. What is going on with this article?

EclipseでMavenプロジェクトを作成しSpringMVCを用いた簡易サイトを構築してみる。

会社の新人研修用に作成したものです。
記事の内容に誤りがあるかもしれません。その時は申し訳ないです。:bow_tone1:

Eclipseのダウンロード

Pleiades All in One Eclipse ダウンロード

以下のサイトよりEclipseをダウンロードします。
http://mergedoc.osdn.jp/

今回は、「Eclipse 2019-03」をダウンロードしました。
eclipse1.png

開発環境に合わせてダウンロードしてください。
「Windows 64bit」の「Java Full Edition」をダウンロードしました。
2GBほどありますのでダウンロードに少し時間がかかります。
eclisep2.png

ダウンロード後、任意の場所に配置し解凍すれば完了です。
解凍にもそれなりに時間がかかります。

Eclipseの起動およびMevenプロジェクト作成

解凍しましたら、「eclipse」フォルダにある「eclipse.exe」を実行します。
eclipse3.png
ワークスペースは任意で指定してください。
Eclipseが起動しますと画面左のタブに「パッケージ・エクスプローラー」が表示されます。

eclipse4.png

MavenのWebアプリケーションプロジェクト作成

「Mavenプロジェクトの作成」リンクを押下しましょう。
「新規Mavenプロジェクト」ダイアログが表示されます。
「プロジェクト名およびロケーションの選択」はそのまま「次へ」を押下します。
maven1.png

「アーキタイプの選択」では、以下を選択し「次へ」を押下します。
 グループID:「org.apache.maven.archetypes」
 アーティファクトID:「maven-archetype-webapp」
 バージョン:「1.0」
maven2.png
「アーティファクトのグループ id を入力してください。」では、プロジェクトにあった設定を行い「完了」を押下します。
 グループID    :任意(ルートパッケージなります)
 アーティファクトID:任意(プロジェクト名になります)
 バージョン    :任意(プロジェクトのばーじょんになります)
 パッケージ    :グループID、アーティファクトIDを入力すると自動で設定されます。
maven3.png
プロジェクトが以下のように作成されます。
「index.jsp」でエラーがでてますが、現時点では気にしなくても大丈夫です。
maven4.png

そもそもMavenとは?

Java用プロジェクト管理ツールのことで、ソースコードを自動コンパイルしたり、第三者が作ったライブラリを自身のソースコードに取り込んで実行可能なファイルを作成してくれたりします。
Mavenはpom.xmlという定義ファイルに記述することでライブラリを自動で追加してくれたり、ソースを変更すると自動でビルドし直してくたりと、大変便利なツールです。

pom.xmlの編集

Maven定義ファイルであるpom.xmlを編集していきます。
「pom.xml」を開くとデフォルトは以下のようになっています。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>jp.co.sample</groupId>
  <artifactId>testprj</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>testprj Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>testprj</finalName>
  </build>
</project>

以下のように修正し、必要なライブラリを追加していきます。
※追加時にEclipseのコードフォーマッタ(Ctrl+Shift+F)で整形しました。

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>jp.co.sample</groupId>
    <artifactId>testprj</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>testprj Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <!-- ①ライブラリバージョンなどプロパティ情報を定義 -->
    <properties>
        <!-- Generic -->
        <java.version>1.8</java.version>

        <!-- servlet -->
        <servlet.version>3.1.0</servlet.version>
    </properties>

    <!-- ②追加するライブラリを定義 -->
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <!-- ③ビルドおよび実行ファイル生成の設定を定義 -->
    <build>
        <finalName>testprj</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

①、②、③の部分を追加しています。
junitのライブラリは今回の説明では不要なので削除しました。

プロジェクトの更新

pom.xmlの編集後、mavenの「プロジェクトの更新」を行います。
pom2.png

「Mavenプロジェクトの更新」ダイアログが表示されます。
「OK」を押下し更新を行います。
pom3.png

ローカル・サーバーの構築

Webアプリケーションを動かすにはWebサーバーが必要です。
eclipseにはローカル環境にWebサーバーを構築してWebアプリを実行できる機能があります。
まずはビューに「サーバー」タブを表示させます。
「ウィンドウ」→「ビューの表示」→「サーバー」(または「その他」)を選択すると、「サーバー」タブが表示されます。
server.png
「その他」の場合は、「ビューの表示」ダイアログより「サーバー」を選択し「開く」ボタンを押下します。
server2.png

右下のビューに「サーバー」タブが表示されました。
「使用可能なサーバーがありません。…」というリンクを押下します。
server3.png
「新規サーバーの定義」ダイアログが表示されます。
プロジェクトのJavaバージョンに合わせてTomcatを選択してください。
http://tomcat.apache.org/whichversion.html
Pom定義の方でJavaバージョンを1.8(Java8)に設定したため、Tomcat9を選択します。
「サーバー名」は任意の名前を入力します。他の項目はそのままにします。
server5.png
「追加および除去」ダイアログが表示されます。
今回作成したプロジェクトが「使用可能」欄にあるので、選択して「追加」ボタンを押して「構成済み」へ移動します。
移動後に「完了」ボタンを押下します。
server6.png
「サーバー」タブにTomcat9が追加されプロジェクトも含まれています。
server7.png
さっそくTomcatサーバーを動かしてみましょう。
「サーバー」タブの右側にある「始動」ボタンまたは「虫」ボタンを押下でTomcatサーバーが起動します。
※「虫」ボタンはデバッグモードでサーバーが起動します。
server8.png
サーバー起動時、ファイアウォールの警告ダイアログが表示されることがあります。
問題なければ「アクセスを許可する」ボタンを押下してください。
server9.png
コンソールビューにエラーの表示がなく、「サーバーの起動」と表示されていればOKです。
ローカルのWebサーバーが起動できました。
server10.png

任意のブラウザより、Webアプリにアクセスしてみましょう。
URLは「http:localhost:8080/プロジェクト名」です。
※プロジェクト名の部分はpom.xmlで定義した「artifactId」タグの値となります。
server10.png

StringMVCを用いたWebアプリ

欠落しているソースフォルダの作成

プロジェクトが生成されると、src/main/resource のみが存在します。
生成時にソースフォルダとして以下の2つは設定されていますが、どうしてか欠落しています。
・src/main/java
・src/test/java
そのためプロジェクトの「ビルド・パスの構成」を開き、ソースフォルダの生成を行います。
spring1.png
「プロジェクトのプロパティ」ダイアログが開きますので、「ソース」タブを開き欠落していることを確認します。
src/main/java(欠落) と src/test/java (欠落) していますね。
この2つを除去して、「フォルダの追加」より作り直します。
spring2.png
「ソース・フォルダの選択」ダイアログが表示されます。
「main」を選択し、「新規フォルダの生成」ボタンを押下します。
spring3.png
「ソース・フォルダー」ダイアログが表示されます。
「フォルダ名」に「java」を入力し「完了」ボタンを押下します。
spring4.png
すると、「src/main/java(新規)」ができました。
同じように「src/test/java」を作成してください。
spring5.png
2つ生成できましたら、「適用して閉じる」ボタンを押下して完了です。
spring6.png

SpringMVCで必要なライブラリを追加

Pom.xmlにSpringMVCで必要なライブラリを追加していきます。

    <!-- ①ライブラリーバージョンなどプロパティ情報を定義 -->
    <properties>
        <!-- Generic -->
        <java.version>1.8</java.version>

        <!-- servlet -->
        <jsp.version>2.2</jsp.version>
        <jstl.version>1.2</jstl.version>
        <servlet.version>3.1.0</servlet.version>
        <!-- Spring -->
        <spring-framework.version>5.0.6.RELEASE</spring-framework.version>
    </properties>
    <!-- ②追加するライブラリーを定義 -->
    <dependencies>
        <!-- servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>
    </dependencies>
    <!-- ③ビルドおよび実行ファイル生成の設定を定義 -->
    <build>
        <finalName>testprj</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

簡単なアプリケーションを作成

現時点で、ここまで記載しました。
続きは後日記載します…

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away