오류내용 : Controller로 페이지 이동시 404 오류 발생
오류원인 : 
1. Controller가 잘못 설정되어 있을 경우
2. application.properties에 내용이 잘못되어 있을 경우
3. jsp 파일의 경로가 잘못되어 있거나 없을 경우
4. build.gradle에서 dependency가 정상 주입이 안되어 있었을 경우
5. maven의 경우 pom.xml에서 tomcat-embed-jasper가 추가 안되어 있을 경우

오류해결 : 
1. Controller 설정 확인
2. application.properties의 내용 확인
3. jsp 파일의 경로 확인
4. build.gradle에서 dependency가 정상적으로 추가되었는지 확인
5. pom.xml에서 tomcat-embed-jasper 추가(필자의 경우 여기서 해결됨)

아래 사진과 같이 정상적으로 등록되어 있어야 Controller로 페이지 이동시 404 오류 없이 이동할 수 있다.

<MyController.class>

package com.study.springboot;

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

@Controller
public class MyController {

    @RequestMapping("/")
    public @ResponseBody String root() throws Exception{
        return "JSP in Gradle";
    }
 
    @RequestMapping("/test1")
    public String test1() {
        return "test1";
    }
     
    @RequestMapping("/test2")    // localhost:8081/test2
    public String test2() {
        return "sub/test2";      // ?뜝?럥堉꾢뜝?럩?젷 ?뜝?럩源덌옙鍮듿뜝占? ?뜝?럥彛? /WEB-INF/views/sub/test2.jsp       
    }

}

<application.properties>

server.port=8191
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

<build.gradle>

plugins {
	id 'org.springframework.boot' version '2.2.5.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
	id 'war'
}

group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'javax.servlet:jstl'
	implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}

}

test {
	useJUnitPlatform()
}

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.boot</groupId>
	<artifactId>SpringBootDashBoard02-1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>SpringBootDashBoard02-1</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

+ Recent posts