天津免费建网站,自己做壁纸的网站,如何注册网站名称,济南行知网站建设目录
PathVariable注解和redirect的作用
使用场景
返回值未命中
返回值路径讲解 起因#xff1a;#记录一下学习编程遇到的最难受的一个bug
PathVariable注解和redirect的作用
首先了解一下PathVariable和redirect
在Spring框架中#xff0c;PathVariable 注解主要用于…目录
PathVariable注解和redirect的作用
使用场景
返回值未命中
返回值路径讲解 起因#记录一下学习编程遇到的最难受的一个bug
PathVariable注解和redirect的作用
首先了解一下PathVariable和redirect
在Spring框架中PathVariable 注解主要用于提取 URI 模板中的变量
redirect: 是在Spring MVC控制器方法中使用的特殊前缀用于执行重定向。有相对路径和绝对路径之分如果有/则代表绝对路径
使用场景
举个栗子
RequestMapping(/original/{id})
public String originalMethod(PathVariable String id) {// Do something with the idreturn redirect:/target/ id;
}RequestMapping(/target/{id})
public String targetMethod(PathVariable String id, Model model) {// Here youll get the id passed from the originalMethodmodel.addAttribute(id, id);return targetPage;
}上面的代码在执行的时候会先进入originalMethod方法返回的时候它会重新请求target下的URL路径也就是执行一次targetMethod方法和我们直接跳转到页面是有区别的比如我们需要对页面进行赋值如果没有重新执行后端方法那么就会出现空白页的现象
因此我认为redirect重定向主要是为了重新发起一次http请求执行我们的后端业务一般情况下只会执行一次
返回值未命中
那么问题出现了如果返回值没有命中类似于下面的场景
RequestMapping(/original/{id})
public String originalMethod(PathVariable String id) {// Do something with the idreturn redirect:target;
}那么当你访问 /original/123此方法会被调用然后它会重定向到相对路径 target。如果你没有提供一个完整的路径比如 /target那么它会被解释为相对于当前请求URL的路径。所以它会尝试重定向到 /original/target。
如果 /original/target 路径恰好与另一个控制器方法匹配那么那个方法会被调用。就不会发生死循环问题
但如果 /original/target 路由与 originalMethod 方法匹配会导致无限重定向循环因为它会不断地调用自己。
举个栗子
RequestMapping(/original)
public String originalMethod() {// Do something with the idreturn redirect:/original;
}返回值路径讲解
RequestMapping(/original)
public String originalMethod() {// Do something with the idreturn redirect: /original;
}RequestMapping(/original)
public String originalMethod() {// Do something with the idreturn redirect:original;
}1.return redirect:original;
这是一个相对重定向。当你在当前URL路径下进行这样的重定向时它会添加到当前路径。例如如果你当前的URL是 /somepath/original此重定向将尝试导航至 /somepath/original/original。
2.return redirect:/original;
这是一个绝对重定向。不论当前URL是什么它都会导航至应用的根目录下的 /original。也就是说它始终导向到 /original。