使用@Controller怎么返回404或者另一个controller文件的返回值

这里要注意的是,controller和restcontroller的区别

restcontroller=controller+responsebody

这样就导致再controller文件中,如果一个请求只使用了controller而没有使用responsebody,那么就会认为这个请求返回的是一个访问资源的请求而不是一个字符串。

示例:

controller01:

@RequestMapping
@Controller
public class Text01Controller {
    @GetMapping("/hi")
    public String hello(){
        return "hello";
    }
}

controller02:

@RestController
@RequestMapping
public class TestController {
    @GetMapping("/hello")
    public String hi(){
        return "hi";
    }
​
}

这里我运行controller01,浏览器访问:localhost:8080/hi,会返回controller02的“hi”,而不是controller01的"hello"。

因为这里controller01我只使用@controller,而没有@Responsebody,就会导致return的“hello”会被当作一个访问资源的请求路径=>localhost:/8080/hello。这是controller02正好对应这个路径,而controller02使用的是@RestController包含了Responsebody,就会返回字符串"hi"。

如果在配置文件中你配置了视图解析器,那么在controller中找不到localhost:/8080/hello时就会去静态资源路径中寻找对应的文件。

这里如果localhost:/8080/hello在项目controller中和静态资源文件长都没有与之对应的路径就会返回404错误。

这时再controller01中加上@REsponsebody即可正常返回“hello”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值