[英]Spring Boot - RequestMapping not working in RestController
[英]@controller not working but @restcontroller working in spring boot
您好,我已經使用 spring initializr 創建了簡單的 spring 啟動應用程序。 我在主應用程序 class 的同一文件夾中添加了一個 controller。
package com.demo.CrudOperations;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class RegistrationController {
@RequestMapping(value = "/welcome", method= RequestMethod.GET )
public String register(){
return "registration";
}
}
這給我以下錯誤 url http://localhost:8080/welcome
Whitelabel Error Page 此應用程序沒有明確的 /error 映射,因此您將其視為后備。
12 月 19 日星期六 12:51:44 IST 2020 出現意外錯誤(類型 = 未找到,狀態 = 404)。
如果我使用@restcontroller 而不是@Controller,它會返回我“注冊”。 在我的 WEB-INF 視圖下,我創建了 registration.jsp。 這是 application.properties 文件
spring.mvc.view.prefix=/WEB-INF/views
spring.mvc.view.suffix=.jsp
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.5.0-SNAPSHOT</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.CrudOperations</groupId>
<artifactId>CrudOperations</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CrudOperations</name>
<description>Demo project for Crud Operations</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<!-- JSTL for JSP -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>
這是目錄結構的樣子
有人可以告訴我我哪里出錯了嗎?
我也嘗試添加 @ResponseBody 但它給了我簡單的字符串而不是 jsp 文件。
在屬性末尾添加“/”:
spring.mvc.view.prefix=/WEB-INF/views/
我遇到了同樣的問題,我做了很多嘗試,但都沒有成功,因為真正的問題是,theamleaf 被禁用了,application.yalm
server:
port: 8091
servlet:
session:
timeout: 600s
spring:
thymeleaf:
enabled: true
datasource:
name: dbname #數據庫名
url: jdbc:mysql://localhost:3306/
username: username #用戶名
password: password #密碼
driver-class-name: com.mysql.cj.jdbc.Driver #數據庫鏈接驅動
type: com.alibaba.druid.pool.DruidDataSource #使用druid數據源
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
redis:
port: 6379
host: "localhost"
mybatis:
type-aliases-package: matsk.mszdqabbs.Pojo
mapperLocations: classpath:mapper/*.xml
configuration:
use-generated-keys: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
pattern:
file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
file:
max-history: 30
max-size: 10MB
path: "./logs"
name: "./logs/mszdqabbs.log"
level:
root: INFO
這種依賴關系意味着您在內部使用 Spring MVC 為您的 spring 啟動應用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
所以你需要在這里使用必須由你的方法返回的ModelAndView object,
ModelAndView 是 web MVC 框架中 Model 和 View 的持有者。 請注意,這些是完全不同的。 此 class 僅包含兩者,以使 controller 返回 model 和查看單個返回值成為可能。 表示由處理程序返回的 model 和視圖,由 DispatcherServlet 解析。 視圖可以采用字符串視圖名稱的形式,需要由 ViewResolver object 解析; 或者,可以直接指定 View object。 model 是 Map,允許使用按名稱鍵控的多個對象。
有關 ModelAndView 的更多詳細信息,請點擊此處
嘗試這個
@RequestMapping(value = "/welcome", method= RequestMethod.GET )
public ModelAndView register(){
return new ModelAndView("registration");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.