Java-RequestMapping和变量的扩展顺序
我不确定Java-RequestMapping和变量的扩展顺序,java,Java,我不确定@RequestMapping是如何工作的,也无法测试这一点,但我有代码,需要理解以排除故障 如果URL请求是/view/game1,并且在字符串testString行中是{service}和“service”变量已经扩展到/view/game1,request,game1,String.class?就像它在@RequestMapping期间展开,然后在testString初始化期间也展开一样 扩张发生在哪个阶段?有@RequestMapping然后是testString和MyClass
@RequestMapping
是如何工作的,也无法测试这一点,但我有代码,需要理解以排除故障
如果URL请求是/view/game1
,并且在字符串testString
行中是{service}
和“service”
变量已经扩展到/view/game1,request,game1,String.class
?就像它在@RequestMapping
期间展开,然后在testString
初始化期间也展开一样
扩张发生在哪个阶段?有@RequestMapping
然后是testString
和MyClass服务=MyClass.getName(testString)
代码中没有“扩展”。对URL路径的一部分进行“提取”(或“解析”),这是在调用bindTestVariable()
方法时发生的
但是,您应该让Spring使用
另外,Java命名约定是方法名以小写字母开头
@GetMapping(“/view/{service}”)
公共服务响应测试服务(@PathVariable(“服务”)字符串服务)
{
返回MyClass.getName(服务);
}
所以当调用bindTestVariable时,第一个参数“/view/{service}”
变成“/view/game1”
对吗?我的意思是game1
来自URL,而不是任何代码。这就是我想弄明白的,因为出于某种原因,该类返回空字符串,可能是其他类,但在检查其他内容之前,我必须理解这一点。那么第二个参数“service”
呢?它是在bindTestVariable()过程中提取的吗?@anon否,“/view/{service}”
不会变成“/view/game1”
,如果有的话,则相反。“/view/game1”
路径从请求中检索,然后与“/view/{service}”
匹配,这意味着service=“game1”
。由于bindTestVariable()
被告知返回服务的值,因此它返回“game1”
。使用Spring的@PathVariable
,Spring将执行相同的匹配,并以“game1”
作为参数值调用您的方法。因此,第三个“service”参数只是告诉您返回什么?对的实际的函数名为“bindPathVariable()”,尽管我认为如果它是私有的,我会对它进行重命名,尽管它听起来像是与@PathVariable
有一些关联。
@RequestMapping("/view/{service}")
public ServiceResponse TESTService(HttpServletRequest request, HttpServletResponse response)
{
String testString = bindTestVariable("/view/{service}", request, "service", String.class);
MyClass service = MyClass.getName(testString);
return service;
}