gpt4 book ai didi

java - "http://localhost/app/hello"和 "http://localhost/app/hello/"有什么区别?

转载 作者:行者123 更新时间:2023-11-28 22:06:07 25 4
gpt4 key购买 nike

我已经写了一个基于 Spring MVC 的 Controller 。

@Controller
@RequestMapping("/hello")
public class JsonController {

@RequestMapping(value="/",method=RequestMethod.GET)
@ResponseBody
public Person service(){
Person person=new Person();
person.setId(3);
person.setName("666");
return person;
}

当我访问“http://localhost/app/hello”时,我得到 404;当我访问“http://localhost/app/hello/”时,我得到 202 OK。“http://localhost/app/hello”和“http://localhost/app/hello/”有什么区别?

最佳答案

看看你的 Controller 代码

@RequestMapping("/hello")
public class JsonController

你的 Controller 有 url 映射 -> "/hello"

和 Action (服务)的url映射是“/”

@RequestMapping(value="/",method=RequestMethod.GET)
@ResponseBody
public Person service()

现在,每当我们为我们的 Controller 提供映射时, Controller 的每个操作都需要 Controller URL 路径作为前缀(如果 URL 映射在 Controller 中定义),正如您提到的 controller 映射与 < strong>"/hello" 和操作 service url 映射到 "/"因此,当您需要访问 service 操作时,然后 ->您需要 Controller 的基本路径(如果请求 URL 映射在 Controller 中定义)+ 操作 URL 映射

-> "/hello" + "/"   => "/hello/"

所以在访问 URL“http://localhost/app/hello/”的情况下,它很容易找到 service 操作并返回响应

现在,当您尝试访问 URL“http://localhost/app/hello”时,URL 映射会搜索此映射并在您的 Controller 映射中找到它(因为它已在您的案例中定义)但是没有为其定义操作,这就是为什么得到 404 .

您可以定义它的默认操作,如:

@RequestMapping(method=RequestMethod.GET)
public Person defaultAction() {
----your code
}

所以现在如果您点击“http://localhost/app/hello”,您将返回有效响应而不是 404

关于java - "http://localhost/app/hello"和 "http://localhost/app/hello/"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com