问题描述:
今天做项目进行测试的时候发现了一个平常没咋注意的现象,当我web项目配置url的地址为多级路径时,如果视图解析器中的prefix配置时没有加"/",那么你之后跳转的页面路径将加上多级路径除去最后一级的路径,而这必然会显示404错误,如下上图:
@Controller
@RequestMapping("/dept")
public class DepartController {
@RequestMapping("/list")
public String list(){
System.out.println("DepartController.list");
return "list";
}
}
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="views/dept/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
结果如下:
而如果在视图解析器前加上"/“就不会出现404错误。
当然如果你url配置的是单级路径,无论加不加”/"都没有影响。
结论:
之后博主又做了html中a标签的一个实验,也出现了上述现象。其实结论很简单,加"/“表示绝对路径,而不加”/"表示相对路径。绝对路径是从站点的根目录下开始寻找资源,而相对路径是从当前路径开始寻找资源。当我们配置的url为多级路径时,相对路径跟绝对路径不同,而单级路径毫无疑问没有区别。
打个比方:当我们配置的url为
/dept/app
时,绝对路径还是从
http://localhost:8080
出发,而相对路径则是从
http://localhost:8080/dept
出发,这就是加不加"/"的区别了。