LoginSignup
3
3

More than 3 years have passed since last update.

IntelliJでSpringFramework(MVC)のmavenプロジェクトHelloWorld(2020/3)

Last updated at Posted at 2020-03-06

目的

Spring FrameworkのMVCを使った新規プロジェクトの作成にちょっとだけ苦労したので、覚書に残します。

なお、大人の事情で、Spring Bootは使いません。

環境

ツールなど バージョンなど
MacbookPro macOS Mojave 10.14.5
IntelliJ IDEA Ultimate 2019.3.3
Java AdoptOpenJDK 11
apache maven 3.6.3
Spring Framework 5.2.4.RELEASE
JUnit 5.6.0
Tomcat apache-tomcat-8.5.51

jdkやmaven、Tomcatのインストールは済んでいるものとします。
※コマンドラインでmavenコマンドを使わない場合は、mavenのインストールは不要です。(IntelliJにバンドルされています)

ゴール

Tomcat起動してブラウザで"Hello world"表示。

手順

基本的には、下記のページの[With Maven]のままです。

キャプチャを最新版のIntelliJのにして日本語訳していきます。
それとページからコードをコピペすると、"(ダブルクォート)がおかしなことになるので、それも直しています。

プロジェクトの新規作成

  • 起動画面で[+ Create New Project] createproject.png

mavenプロジェクトを作成

  • 左側のパネルから、mavenを選択
  • [Next]をクリック
    maven.png

  • [Name]と[Location]を入力/選択

  • [Artifact Coordinates]をクリックして項目を開き、グループID,アーティファクトIDを入力

  • [Finish]をクリック
    maveninfo.png

プロジェクトが開くので、右下に以下のようなポップアップが表示されたら、[Enable Auto-import]しておくと便利です。
mavenimport.png

依存関係設定

pom.xml(自動で開いたはず)にの<project>タグ下に下記を追記します。

2020/03/09追記
<packaging>war</packaging>の行を追加しました。

pom.xml
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Java version -->
        <java.version>11</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>

        <!-- Spring -->
        <spring.version>5.2.4.RELEASE</spring.version>

        <!-- Test -->
        <junit.version>5.6.0</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

gradleで書きたい・・・(こちらも大人の事情でmavenに:cry:)

Spring WebMVCの設定

  • src/main下に、webapp/WEB-INFディレクトリを作成
    add-webinf-dir.png
    name-webinf.png

  • 作成したWEB-INFディレクトリ下に、web.xmlファイルを作成する
    create-webxml.png
    name-webxml.png

  • web.xmlの中身を以下のようにする

web.xml
<?xml version="1.0" encoding="UTF8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <display-name>HelloWorld Application</display-name>
    <description>
        This is a simple web application with a source code organization
        based on the recommendations of the Application Developer’s Guide.
    </description>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
  • WEB-INFフォルダ下に、dispatcher-servlet.xmlを作成し、以下の内容にする
dispatcher-servlet.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>
    <context:component-scan base-package="org.example.controllers"/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

base-package属性は、自分が作成する構成に合わせること

コントローラーの作成

  • dispatcher-servlet.xmlbase-package属性に指定したパッケージに、コントローラークラスを作成する。

例)IndexController
create-controller.png
name-controllerclass.png

  • 下記のように実装する
IndexController.java
package org.example.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.Model;

@Controller
public class IndexController {

    @GetMapping("/")
    public String index(Model m) {
        m.addAttribute("someAttribute", "Hello world!");
        return "index";
    }
}

Viewの作成

  • WEB-INFフォルダ下に、viewsフォルダを作成する
  • その下に、index.jspというファイルを作成する
    create-jsp.png
    name-jsp.png

  • <body>タグ下に、下記の内容を追加する

indx.jsp
<body>
<p>${someAttribute}</p>
</body>

Tomcatの設定

1. Tomcatディレクトリの設定

  • メニューの[IntelliJ IDEA]-[Preference]を開く
  • Build, Execution, Deploymentを開く
  • [Application Servers]を選ぶ

setup-tomcat.png

  • [+]を押して、[Tomcat Server]を選ぶ

select-tomcat.png

  • Tomcatを置いたフォルダを指定し、OKをクリック

select-tomcat-forder.png

  • OKをクリック

2. Configurationを追加する

  • ツールバーにある[Add Configuration...]をクリックする

add-configuration.png

  • [+]を押して、[Tomcat Server]-[Local]を選ぶ

    • [Tomcar Server]が見えない場合は、リストを下にスクロール
    • それでも見えない場合は、[25 more items...]をクリックしてみてください add-tomcat-localsever.png
  • [Name]に任意の名称を入力

  • 右下の[Fix]アイコンをクリック

setup-run-configuration.png

  • [hello:war_exploded]を選択

fix-deploy-artifact.png

  • OKをクリック

実行

ツールバーの実行ボタン、またはデバッグボタンをクリック

run.png

ブラウザに表示されたら成功!

helloworld.png

感想

Kotlin書きたい(こちらも大人の事情で)

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3