特别是在Spring MVC中,最重要的区别之一是绝对路径和相对路径。
如您所知:
在Spring MVC中,您可以将视图作为或对象返回。String
ModelAndView
重要提示:
在这两种情况下,您都必须注意相对/绝对路径:
- 如果在视图名称的开头声明,则使用的是绝对路径。
也就是说,它无关紧要类级别,并直接将自己作为最终视图名称引入。/
@RequestMapping
- 如果未在视图名称的开头声明,则使用相对路径(相对于类路径),因此它将追加到类级别以构造最终的视图名称。
/
@RequestMapping
因此,在使用Spring MVC时,您必须考虑上述注意事项。
示例:
1。创建两个HTML文件并在spring(boot)结构的文件夹中:
请注意,在相对路径的情况下,类级别表现为文件夹路径。test1.html
test2.html
static
@RequestMapping
--- resources
--- static
--- classLevelPath //behaves as a folder when we use relative path scenario in view names
--- test2.html //this will be used for relative path [case (2)]
--- test1.html //this will be used for absolute path [case (1)]
- 创建一个控制器类,如下所示。此示例显示了具有返回值以及相对路径和绝对路径的不同情况。
String
ModelAndView
@Controller
@RequestMapping("/classLevelPath")
public class TestController {
//case(1)
@RequestMapping("/methodLevelAbsolutePath1")
public String absolutePath1(Model model){
//model.addAttribute();
//...
return "/test1.html";
}
//case(1)
@RequestMapping("/methodLevelAbsolutePath2")
public ModelAndView absolutePath2(Model model){
ModelAndView modelAndView = new ModelAndView("/test1.html");
//modelAndView.addObject()
//....
return modelAndView;
}
//case(2)
@RequestMapping("/methodLevelRelativePath1")
public String relativePath1(Model model){
//model.addAttribute();
//...
return "test2.html";
}
//case(2)
@RequestMapping("/methodLevelRelativePath2")
public ModelAndView relativePath2(Model model){
ModelAndView modelAndView = new ModelAndView("test2.html");
//modelAndView.addObject()
//....
return modelAndView;
}
}
注意:
您可以通过 a(例如或在 Spring Boot 的文件中)指定视图文件的后缀,并且不要在上面的代码中声明后缀。ViewResolver
InternalResourceViewResolver
spring.mvc.view.suffix=.html
appliction.properties
.html
最好的问候