【问题标题】:No mapping found for HTTP request with URI error?找不到带有 URI 错误的 HTTP 请求的映射?
【发布时间】:2021-07-02 09:14:08
【问题描述】:

我写了一个spring boot项目。 它有三个文件。
Appconfig.java

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[]{"/"};
    }
}

HelloController.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.";
    }
}

当我尝试运行它时,它出现错误“在名称为'dispatcher'的 DispatcherServlet 中找不到带有 URI [/SpringC1_01/] 的 HTTP 请求的映射”。 这是因为服务器没有找到控制器还是其他原因?谢谢。

【问题讨论】:

  • 尝试为你的 HelloController 添加一个@controller 注解
  • @UdonN00dle。 Thx.我试过了,它有新的错误。 “以下是错误摘要,这些错误的详细信息在日志后面列出。* 激活localhost:8080/SpringC1_01/hi 导致异常。检测到以下失败消息:+ 来自localhost:8080/SpringC1_01/hi 的异常读取清单:清单可能不是有效或无法打开文件。+ 根级别的数据无效。第 1 行,位置 1。"
  • 好的,新的错误很好哈哈。我还没有看到这个错误,也许试试这个帖子? stackoverflow.com/questions/15782798/…

标签: java spring-boot


【解决方案1】:

是的。我怀疑代码中有两个问题。

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

【讨论】:

    【解决方案2】:

    最重要的是,您在这里遗漏了几件事。

    1. 包含 public static void main 的主类,该类应使用 @SpringBootApplication 注释

    2. HelloController 应该用@RestController 注释

    3. 在方法级别,它绝对应该指向某些 HTTP 方法,也许它是 Get 映射,所以在方法周围添加 @GetMapping 注释。

    4. 从方法级别移动 RequestMapping 注解并将其添加到 HelloController 类中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-05
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多