Spring Boot 화이트라벨 오류 페이지(type=Not Found, status=404)
안녕하세요!스프링 스터디를 시작합니다. 같은 방법으로 튜토리얼을 따르는데 오류가 반환됩니다.
폴더 구조:
이상한 것은: "EventoController.java"를 br.com 에 삽입하면 됩니다.SpringApp.SpringApp, 올바르게 작동합니다.
package br.com.SpringApp.SpringApp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringAppApplication {
public static void main(String[] args) {
SpringApplication.run(SpringAppApplication.class, args);
}
}
.
package br.com.SpringApp.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EventoController {
@RequestMapping("/cadastroEvento")
public String form() {
return "evento/formEvento";
}
}
요청하신 대로 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>br.com.SpringApp</groupId>
<artifactId>SpringApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SpringApp</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
누가 제가 어디가 틀렸는지 말씀해 주시겠어요?
기본 클래스가 다른 클래스보다 높은 루트 패키지에 있는지 확인합니다.
SpringBootApplication(@SpringBootApplication으로 주석이 달린 클래스)을 실행하면 Spring은 기본 클래스 패키지 아래의 클래스만 검색합니다.
그래서 당신의 선언은 다음과 같습니다.
package br.com.SpringApp.SpringApp;
SpringApp 애플리케이션과 같은 주요 클래스 내에서
package br.com.SpringApp.SpringApp.controller;
컨트롤러 이름(EventoController 및 인덱스Controller)
package br.com.SpringApp.SpringApp.model;
당신의 모델의 이름, 즉 Evento.
이 작업이 끝나면 프로젝트를 정리하고 스프링 부트 응용 프로그램을 다시 실행합니다.
pom.xml 내에 올바른 타임리프 종속성이 있는지 확인합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
솔루션:사용 중인 경우@Controller
그러면 컨트롤러 클래스를 통해 MVC 컨트롤러 클래스로 처리됩니다.그러나 RESTFull 웹 서비스에서 특수 컨트롤러를 사용하려면 다음을 사용해야 합니다.@Controller
와 함께@ResponseBody
주석 또는 직접 사용할 수 있습니다.@RestController
저쪽에Controller
클래스. RestFull 웹 서비스로 SpringBoot 프로젝트를 만들 때 동일한 오류가 발생하여 효과가 있었습니다.
package br.com.SpringApp.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class EventoController {
@RequestMapping("/cadastroEvento")
@ResponseBody
public String form() {
return "evento/formEvento";
}
}
또는:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
public class EventoController {
@RequestMapping("/cadastroEvento")
public String form() {
return "evento/formEvento";
}
}
다른 클래스는 주 클래스와 동일한 레벨 또는 그 아래에 있어야 합니다.또한 @Controller 또는 @RestController를 사용합니다.
@Controller
public class PrintHello {
@RequestMapping("/hello")
@ResponseBody
public String helloFunction() {
return "hello";
}
}
SpringBoot 초보자인 이 오류는 몇 가지 이유로 인해 누구에게나 한 번 이상 발생할 수 있습니다.
- 응용 프로그램 클래스(예: SpringAppApplication.java)는 루트 수준에 있어야 하며 컨트롤러 클래스는 동일한 수준 아래에 배치하거나 하위 디렉터리에 배치할 수 있습니다.이 응용 프로그램 클래스는 다음을 사용하여 표시해야 합니다.
@SpringBootApplication
또는extends from SpringBootApplication
- 당신은 놓칠 수도 있습니다.
@RestController
주석이 컨트롤러 클래스의 맨 위에 표시됩니다. - 매핑 주석을 놓칠 수 있습니다. (
@PostMapping("/save")
또는@GetMapping("/id")
등) - 슬래시 또는 주석을 놓칠 수 있으므로 마지막으로 올바른 URL(요청 매핑 주소)을 입력하고 있는지 확인합니다.그렇지 않으면 철자를 다시 확인합니다.예:
@RequestMapping("/customer")
Deepak에서 답변했듯이, main 클래스는 다른 패키지보다 루트 패키지에 있어야 합니다.그러나 이 작업을 수행하지 않으려면 다음을 사용할 수 있습니다.
@SpringBootApplication(scanBasePackages = {"com.other.packages","com.other"})
public class SpringAppApplication {
.....
}
GetMapping 및 PostMapping에서 name 매개 변수를 잘못 지정했습니다.
@GetMapping(name: "/all")//wrong code
실제로 경로를 직접 지정해야 합니다.
@GetMapping("/all") //correct code - remove name
이 실수가 미래에 누구에게나 도움이 되기를 바랍니다!
다른 사용자가 이 오류를 발견한 경우:모든 파일을 저장했는지 확인합니다.
저의 경우, 모든 파일을 저장함으로써 해결되었습니다.
메서드 앞에 @ResponseBody 주석을 추가해야 합니다.
언급URL : https://stackoverflow.com/questions/49034254/spring-boot-whitelabel-error-page-type-not-found-status-404
'source' 카테고리의 다른 글
ASP.NET 웹 API를 사용하여 이미지를 반환하는 권장 방법이 있습니까? (0) | 2023.06.20 |
---|---|
Gradle 캐시를 지우는 방법은 무엇입니까? (0) | 2023.06.20 |
vuex 스토어를 라벨 페이지로 가져오는 동안 예기치 않은 토큰 오류가 발생했습니다. (0) | 2023.06.20 |
양식 인증 시간 초과 대 세션 시간 초과 (0) | 2023.06.20 |
CSS를 사용하여 텍스트 길이를 n줄로 제한 (0) | 2023.06.20 |