Spring5 MVCでhello world

Spring5のMVCでhello worldを表示するサンプルです。
(確認環境:Spring 5.3.7、JDK 8、STS 4)

目次 Spring5 MVCでhello world
  pom.xml
  web.xml
  applicationContext.xml
  コントローラ(Hello1Controller.java)
  JSPファイル(hellotest.jsp)

Spring5 MVCでhello worldの概要

今回作成したファイルです。

構築と実行

1.Mavenプロジェクトを作成。
2.シンプルなプロジェクトで作成。
3.ビルドパスでjava1.5をjava1.8に変更。
4.各種ファイルを作成する。
5.Eclipseにtomcatを登録し起動する。
EclipseにTomcatを登録する手順
6.ブラウザにURLを入力して画面を表示する。
http://localhost:8881/spring5-mvc-hello/

githubにコードがあります。
https://github.com/ut23405/spring5/tree/master/spring5-mvc-hello

pom.xml

<?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>com.example.test1</groupId>
	<artifactId>spring5-mvc-hello</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<build>
		<sourceDirectory>src/main/java</sourceDirectory>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.9</version>
		</dependency>
	</dependencies>
</project>

プロジェクト名と7行目のartifactIdの値は一致させます。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:config/applicationContext.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

11行目のapplicationContext.xmlファイルを読み込みます。
7行目と16行目は紐付いています。

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<context:component-scan base-package="com.example.test1" />
	
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

15行目のComponentScanは、対象のパッケージ配下にある@Component等が付与されたクラスを探してBeanとしてDIコンテナに登録します。
18行目は、ViewResolverです。使用するviewを指定します。
19,20行目は、/WEB-INF/配下にある拡張子jspが表示対象になります。

コントローラ(Hello1Controller.java)

package com.example.test1;

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

@Controller
public class Hello1Controller {
	@GetMapping("/")
    public String hello() {
        return "hellotest";
    }
}

JSPファイル(hellotest.jsp)

<!DOCTYPE html>
<head>
	<meta charset="utf-8">
	<title>Home</title>
</head>
<body>
	<h1>Hello world!</h1>
	<%= 22 + 33 %>
</body>
</html>

関連の記事

Spring5 XMLでhello worldを表示

△上に戻る