Intellij Spring Framework MVC HelloWorld

今回は、Ultimate Edition(有償版)のIntellijで、

Springフレームワークを利用してHelloWorldを表示させる手順のメモとなります。

使用する言語はJava1.8であり、

利用するフレームワークは、SpringBootではなくSpring Web MVCです。

また、IntellijもCommunity(無償版)ではなく、

Ultimate(有償版)利用前提での記載となりますのでご注意ください。

Spring Web MVC

JetBrains Intellij IDEA – エディション比較 –

 

環境

・OS:mac OS Catalina 10.15.6

・IDE:IntelliJ IDEA 2021.1 (Ultimate Edition)
Build #IU-211.6693.111, built on April 6, 2021

・Java:Amazon Corretto1.8.0_282


Mavenプロジェクト作成

まず、プロジェクトを作成します。

Intellijを開き、New Projectボタンをクリックします。

New Projectが表示されたら、Mavenを選択し、

今回の場合、Project SDKとして1.8を選択します。

また、Create from archetypeにチェックを入れて、

maven-archetype-webappを選択した後、Nextボタンをクリックします。

※Intellijのバージョン次第ですが、1.8が選択肢に存在しない場合があります。

その場合、Download JDKより追加を行います。

1.8にもいくつか種類が存在しますが、

今回の場合、Amazon Corretto1.8.0_282を使用しています。

続けて、プロジェクト名を入力し、

プロジェクトの保管場所を指定して、Finishボタンをクリックします。

※今回は、GroupId等はデフォルトのまま作成します。

変更する場合、後述のxmlファイルの指定内容も合わせる必要があります。

プロジェクトが生成されると、自動的にビルド実行されます。

 


Maven依存設定 調整

まずは、自動生成されたpom.xmlを調整します。

以下のSpringframeworkの設定を追加します。

<!-- add springframework -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.3.RELEASE</version>
</dependency>
<!-- add springframework -->

※以下、追加後の全量です。junitが不要であれば除外しても問題ありません。

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>springMVC_test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>springMVC_test Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- add springframework -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.3.RELEASE</version>
    </dependency>
    <!-- add springframework -->
  </dependencies>

  <build>
    <finalName>springMVC_test</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

pom.xmlの調整が済んだら、プロジェクトのMaven依存モジュールを更新します。

プロジェクト名をクリックして、右クリックメニューを開き、

Maven -> Reload project をクリックして更新します。

 


MVC設定用xmlファイル 調整

続けて、MVC設定用のweb.xmlを修正していきます。

web.xmlはプロジェクト作成時に、自動生成されます。

src/main/webapp/WEB-INF/に配置されますので、以下の内容に修正します。

<?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"
         version="2.5">

  <display-name>Spring MVC Application</display-name>

  <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
  <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/HelloWeb-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

尚、現状ファイルが存在しないため、

HelloWeb-servlet.xmlの記述箇所がエラーになると思います。

しかし、続けてHelloWeb-servlet.xmlを作成することで解消します。

src/main/webapp/WEB-INFフォルダを選択して、右クリックメニューを開き、

New -> File より作成します。

作成したHelloWeb-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">

    <!-- Set base-package name-->
    <context:component-scan base-package="com.helloweb"/>
    <mvc:annotation-driven/>
    
    <!-- Set view settings-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"/>
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

こちらもエラーが発生するかと思いますが、後述の手順で解消されます。

 


挙動確認用 ファイル・ディレクトリ 整備

まず、挙動確認用のJSPファイルを調整します。

プロジェクト生成時に、index.jspが自動生成されていますが、

こちら以外にも確認用のjspファイルを作成していきたいと思います。

まず、確認用のjspを配置するフォルダを用意します。

src/main/webappフォルダを選択して、右クリックメニューを開き、

New -> Directory より作成します。

フォルダ名称は、jspとします。

そして、src/main/webapp/jspフォルダを選択して、右クリックメニューを開き、

New -> JSP/JSPX より作成します。

hello_world.jspと入力して、エンターキーを入力するか、JSP fileをダブルクリックします。

hello_world.jspは、ある程度内容が自動生成された状態で、ファイルが作成されます。

内容を以下の様に修正します。

<%--
  Created by IntelliJ IDEA.
  User: it
  Date: 2021/04/28
  Time: 1:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring MVC Demo</title>
</head>
<body>
    <h1>Spring MVC Demo</h1>
    <h2>${message}</h2>
</body>
</html>

 

続けて、src/main配下に、javaフォルダとresourcesフォルダを作成します。

src/mainフォルダを選択して右クリックメニューを表示させ、

New -> Directory からフォルダを作成します。

尚、フォルダ名称を指定するNew Directoryのところで、

下の方に表示される候補にjava、resourcesが表示される場合、

そちらをダブルクリックすればフォルダが作成されます。

表示されない場合は、フォルダ名を入力して作成します。

 

続けて、コントローラクラスを作成します。

※packageをIntellijの補助機能で作成する想定の手順となります。

src/main/javaフォルダを選択して右クリックメニューを表示させ、

New -> Java Classからファイルを作成します。

ファイル名称は、HelloControllerと入力し、Classダブルクリックして作成します。

作成したファイルの内容を、以下の内容に修正します。

package com.helloweb;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HelloController {

    @RequestMapping(value = "/hello_world", method = RequestMethod.GET)
    public String printHelloWorld(ModelMap modelMap){

        // add attribute to load modelMap
        modelMap.addAttribute("message",
                "Hello World and Welcome to Spring MVC!");

        // return the name of the file to be loaded "hello_world.jsp"
        return "hello_world";
    }

}

こちらの内容に修正すると、1行目のpackage com.helloweb;の部分がエラーになると思います。

エラーになる理由は、指定されたパッケージにファイルが配置されていないためです。

赤線部分にカーソルを当てると、赤いランプマークが表示されます。

こちらの下三角マークをクリックしてメニューを表示させて、

Move to package ‘com.helloweb’をクリックします。

クリックすると、変更先のディレクトリ選択候補が出てきますので、

今回は、…/src/main/java/com/hellowebを選択してOKボタンをクリックします。

自動的に選択したpackageが作成され、

作成されたpackageにコントローラクラスが配置されてエラーが解消されます。

 

エラーが解消されたら、念のため、プロジェクトのビルドを行います。

メニュー Build -> Build Project

 


Application Server 設定

続けてAppサーバーの設定を行います。今回は、Tomcatを利用します。

尚、Tomcatに関しては、Intellijに導入済みの前提でメモさせて頂きます。

Tomcatの設定については、以下を参考に頂ければと思います。

Intellij Ultimate 有償版 Tomcat 追加

 

Tomcatの設定が済んでいる状態で、起動設定を行います。

メニューの Run -> Edit Configurations… をクリックします。

その後、Run/Debug Configurations が表示されたら、

Add new run configuration… をクリックします。(二箇所にリンクが存在し、どちらでも同じです)

Add New Configuration から、Tomcat ServerLocal をクリックします。

Tomcatの設定内容が表示されたら、Serverタブの右下に存在するFixボタンをクリックします。

Tomcat動作時にデプロイされる実体の選択候補が表示されるため、どちらかをクリックします。

※どちらでも正常に動作します。

Deploymentタブの一覧に、選択したwarが表示されていることを確認します。

Serverタブの下部のBefore launchにも、war artifactが表示されていることを確認したら、

OKボタンをクリックして完了します。


Tomcat 起動 挙動確認

準備が整ったら、実行して挙動確認を行います。

メニューのRun -> Run ‘Tomcat X.X.X’ をクリックします。

エラーが無く、正常にTomcatが起動すれば、起動ログが出力され、

デフォルト設定だと、自動的にブラウザが立ち上がり、

デフォルトページ(ウェルカムページ)にアクセスされます。

※デフォルトページ(ウェルカムページ)の内容は、index.jspになっています。

 

もしも、自動的にアクセスされない場合は、

Edit Configurationで設定されているURLにアクセスしてください。

続けて、ブラウザのURLに、マッピング済みのhello_worldという文字を追加して、

Getリクエストの挙動を確認します。

 

Getメソッド側からレンダリングされた文字列が正常に表示されていれば、

デフォルトページ以外も問題なく動作していることを確認できました。

 

終了する場合は、停止ボタンをクリックして終了します。

 


 

今回のメモは以上となります。

Spring Web MVC は、 SpringBootと比較すると、

HelloWorldを表示するだけでも、事前準備の量が大幅に増えます。

新規案件では、ほぼSpringBootが採用されると思いますが、

既存のシステムで、Spring Web MVC で構築されているシステムは多い様に感じます。

細かな設定は、すぐに忘れてしまいますので、

逐一メモしていきたいと思います。

都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 171

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る