簡體   English   中英

未找到帶有 URI 錯誤的 HTTP 請求的映射?

[英]No mapping found for HTTP request with URI error?

我寫了一個spring boot項目。 它有三個文件。
應用程序配置文件

package config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan
(basePackages = {"controller"})
public class AppConfig {
}

ServletInitilizer.java

package config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[0];
    }
    
    @Override
    protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[]{AppConfig.class};
    }
    @Override
    protected String[] getServletMappings() {
    return new String[]{"/"};
    }
}

你好控制器.java

package controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

public class HelloController {
    @RequestMapping("hi")
    @ResponseBody
    public String hi() {
    return "Hello, world.";
    }
}

當我嘗試運行它時,它出現錯誤“在 DispatcherServlet 中找不到名稱為‘dispatcher’的 URI [/SpringC1_01/] 的 HTTP 請求的映射”。 這是因為服務器沒有找到控制器還是其他原因? 謝謝。

是的。 我懷疑代碼中有兩個問題。

  1. AppConfig 中缺少 @SpringBootApplication 注釋。
  2. HelloController 中缺少 @RestController 注釋。

最重要的是,您在這里遺漏了一些東西。

  1. 包含public static void main 的主類,這個類應該用@SpringBootApplication 注釋

  2. HelloController 應該用 @RestController 注釋

  3. 在方法級別,它肯定應該指向某些 HTTP 方法,在您的情況下它可能是 Get 映射,因此在方法周圍添加 @GetMapping 注釋。

  4. 從方法級別移動 RequestMapping 注釋並將其添加到 HelloController 類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM