1. 我们需要确定controller层是否被springboot扫描加载
我们可以从springboot的启动日志中可以看到controller的路径是否被加载。
如果spring boot的版本在2.1以上,需要在application.properties文件中添加配置
logging.level.web=trace
这是由于spring boot 2.1使用了Spring Framework5.1,而Spring Frame5.1对日志做了较大的改动。只有只用TRACE级别才会提供详细信息。
如果controller层被扫描到,那么会在启动日志中打印出来
2021-03-04 12:06:05.295 TRACE 2772 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping :
c.d.p.c.TestController:
{GET [/value]}: testController(Model)
如果已经有日志显示路径被加载,那么本地访问路径就是
http://localhost:8080/value
访问spring boot 内置的tomcat的路径和访问tomcat里面启动的war包路径区别在于不需要在路径中配置war包的包名。
2.如 果没有打印路径相关日志,那说明controller层没有被扫描到
没被扫描到有两种情况
1. spring boot扫描不到controller所在的包
通过SpringBootApplication注解类启动时候,spring boot会自动扫描当前启动类所在的文件夹和子文件夹。你需要确定controller文件位置是否正确。
此时TestController和Test2Controller都是可以被扫描到的。
2. controller类是否添加了controller相关注解
当你写的controller中的方法返回的是一个字符串的时候,controller类要使用@RestController注解或者@Controller+@ResponseBody注解,方法上面也需要添加路径注解@RequestMapping
@Controller
@ResponseBody
public class TestController {
@RequestMapping(value = "/value")
public String testController(){
return "value";
}
}
@RestController
public class Test2Controller {
@RequestMapping(value = "/value2")
public String testController(Model model){
return "value2";
}
}