Spring Boot访问不到controller

  最近开始学习spring boot,做练习时候访问不到controller,报了404错误。开始以为是没有扫描到的问题,后来发现还有其他原因。下面我们总结一下访问不到controller的错误原因。

首先,出现这个异常说明了跳转页面的url无对应的值. 

异常:This application has no explicit mapping for /error, so you are seeing this as a
fallback.

 

 

 解决方案:

1. 确认是否扫描到了controller,Application启动类的位置是否正确。

Application启动类的位置不对。要将Application类放在最外侧。即包含所有子包 
原因:spring-boot会自动加载启动类所在包下以及其子包下的所有组件。

例如:下图会扫描Application启动类包下(即mycode包)、以及其子包(这里的controller包)。

2. 确认输入项目路径是否正确,如:http://localhost:8080/index,这里需要注意的是端口号的查看。

3.确认注解是否用对

在 Controller 层类上面使用的注解是 @RestController 而并非是 @Controller,或者是 @Controller + @ResponseBody;
详解:如果返回 String 或者 json 的话就直接类上用 @RestController;
   如果想要页面跳转的话,就使用 @Controller;
   如果只有在某方法上返回 json,其他方法跳转页面,则在类上添加 @Controller,在需要返回 String 和 json 的方法上添加 @ResponseBody 注解;

4.确认导入项目注解的包地址是否正确

@RequestMapping("/hello")
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
import org.springframework.web.bind.annotation.RestController;

5.控制器的URL路径书写问题 
@RequestMapping(“xxxxxxxxxxxxxx”) 
实际访问的路径与”xxx”不符合,注意对应一下自己访问的url与@RequestMapping中填写的是否一致,千万别忽略了多了一个空格的问题。

6.配置了上下文路径,使用了server.context-path

这里着重说一下这个问题,这也是博主犯得错误。博主使用的SpringBoot版本为2.1.1,而server.context-path在2.0版本中已经弃用了,采用 server.servlet.context-path由于版本的差异导致了配置的上下文路径无效。

 SpringBoot版本配置
1.xserver.context-path
2.xserver.servlet.context-path

 

建议大家可以专门参考一下spring boot 1.x版本和2.x版本的差别,这样后续学习或者工作过程中有相关问题可以减少很多麻烦。如果以上文章没有解决您的问题,可以在下方留言,我看到的话会第一时间回复。还请大家多多指教。

 

eclipse 的springboot项目的hello显示,tomcat访问404,先说明端口未被占用,因为空项目可以访问tomcat的localhost。 百度了很久,说法最多的一种就是controller等子包要和主程序application.java同列,但我这个问题不存在,就是是访问不了controller 项目: 主程序: ```@SpringBootApplication //@ComponentScan(basePackages= {"com.example.demo.controller"}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` controller: ``` @Controller @EnableAutoConfiguration public class TestController { @ResponseBody @RequestMapping("/hello") public String hello() { return "<font style='font-size:28px;'>Hello Spring Boot</font>"; } } ``` 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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Thymeleaf组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` tomcat访问名我设置了/ 然后百度localhost:8080/hello 无论如何就是出不来
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页