当前位置: 首页 > 知识库问答 >
问题:

Spring引导控制器404

包德业
2023-03-14

我是Spring Boot的新手,并试图构建一个简单的Web应用程序。我定义了一个包含我的url映射的控制器类,但在浏览器上它给我一个白标页面错误(404)。我无法理解为什么它无法映射。我尝试过更改我的组件扫描基础包,但它仍然没有将我重定向到控制台中的页面“abc”或打印“在控制器中”。

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>bms</groupId>
    <artifactId>com.wellmanage.bms</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>BMS</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>

控制器类

package com.wellmanage.controller;   

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class BookController {

    @RequestMapping("/")
    public String hello() {
        System.out.println("in controller");
        return "abc";
    }
}

主类

package com.wellmanage.bms;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BmsApplication {

    public static void main(String[] args) {
        SpringApplication.run(BmsApplication.class, args);
    }
}

共有1个答案

傅振濂
2023-03-14

BmsApplication类放置在com.wellmanage.bms包下,默认情况下,@SpringBootApplication注释使用此包作为根来运行组件扫描。由于BookController位于com.wellmanage.controller中,因此默认配置中省略了包。

你有两个选择:

  1. 更改默认组件扫描设置并设置要扫描的软件包:
    @ComponentScan("com.wellmanage")
    @SpringBootApplication
    public class BmsApplication {

        public static void main(String[] args) {
            SpringApplication.run(BmsApplication.class, args);
        }
    }

从您发布的配置来看,您似乎没有设置任何模板引擎。因此,从控制器返回字符串“abc”将被忽略。

 类似资料:
  • > 我有两个控制器(ControllerA和ControllerB) 两个控制器都调用一个服务(MyService)。 MyService调用名为MyRepository的接口,该接口有两个实现(FirstRepository和SecondRepository)。 如何可能在从ControllerA调用服务(MyService)时使用FirstRepository而在调用来自ControllerB

  • 我正在intellij中运行Spring Boot应用程序,我所有的计划任务和一切都正常工作,但是我在@RestController和@Request estMap注册的控制器没有注册。当我尝试访问这些时,我得到404,而当我使用eclipse时,同样工作正常。甚至我的ide控制台也显示rest控制器已注册: 无法猜测可能会出什么问题?

  • 招呼 我有一个Spring Boot应用程序(1.4.1版)。之前从中设置 -支持thymeleaf模板中不严格的html。我只在电子邮件模板中使用Thymeleaf模板。该应用程序代表tho REST API,所有控制器返回数据。 然而,在我为电子邮件设置了Thymeleaf之后,一些请求正在为它们寻找Thymeleaf模板,并返回。 Thymeleaf配置(yml,这是Thymeleaf的所有

  • ----在2019-06-03@13:21 CET下面添加信息----因为我有一个普通的Spring(非引导)应用程序接受来自打印机的POST请求,所以我能够在传入的请求中记录信息。所以我就这么做了。 这是来自打印机的POST请求之一,Spring boot Oontroller不接受它: 这是Postman向完全相同的URL发送的POST请求之一,Spring boot Oontroller接受

  • 我试图找出一种最简单的方法来控制基本Spring Boot RESTful服务的404 Not Found处理程序,例如Spring提供的示例: https://spring.io/guides/gs/rest-service/ 而不是让它返回默认的Json输出: 或者有比抛出并处理NoHandlerFoundException更好的方法吗?

  • 我有一个java/Spring Boot应用程序,我想在其中构建一个APIendpoint,创建并返回一个可下载的excel文件。这是我的控制器endpoint: 然后是服务类 这段代码使用Apache POI库成功地创建了正确的excel文件。但是这不会正确地将它从控制器中返回,因为< code > ByteArrayResource::getFilename 总是返回null: 我可以使用什么