简体   繁体   中英

No mapping found for HTTP request with URI error?

I wrote a spring boot project. It has three files.
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.";
    }
}

When I try to run it, it has error "No mapping found for HTTP request with URI [/SpringC1_01/] in DispatcherServlet with name 'dispatcher'". Is this because server didn't find the controller or other reason? Thx.

Yes. i suspect two issues in the code.

  1. @SpringBootApplication annotation is missing in AppConfig.
  2. @RestController annotation is missing in HelloController.

Most of all you are missing a couple of things here.

  1. Main class which contains public static void main and this class should be annotated with @SpringBootApplication

  2. HelloController should be annotated with @RestController

  3. At method level it should definitely point to some HTTP method in your case perhaprs it is Get mapping, so add @GetMapping annotation arround the method.

  4. Move RequestMapping annotation from method level and add it to HelloController class.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM