路径中“./”、“../”、“/”代表的含义 路径相关知识点总结
"./"
:代表当前目录
"../"
:代表上一层目录
"/"
:代表根目录
路径作用
编写路径为了告诉编译器如何找到其他资源.
路径分类
1. 相对路径:
从 当前资源 出发找到其他资源的过程
req.getRequestDispatcher("index.jsp").forward(req, resp); 目前所在的目录
req.getRequestDispatcher("./index.jsp").forward(req, resp); 目前所在的目录
req.getRequestDispatcher("../index.jsp").forward(req, resp); 向上跳一级
2. 绝对路径:
从 根目录 ( 服务器根目录 或 项目根目录 ) 出发找到其他资源的过程。
req.getRequestDispatcher("/index.jsp").forward(req, resp);
1、如果是请求转发: /
表示项目根目录 (WebContent
)
2、如果是重定向,静态资源引用: 比如说< img src=""/>
< scrip src=""/>
< style/>
location.href
等, /
表示 服务器根目录 (tomcat/webapps
)
注意
如果客户端请求控制器,控制器转发到JSP后,JSP中如果使用相对路径,需要按照控制器的路径去找其他资源.。
保险办法:使用绝对路径,可以防止上面的问题.
技巧
只要以/
开头的都是绝对路径 ,只要不以/
开头的都是相对路径
除了请求转发 /
指向项目根目录,其余/
都是指服务器根目录
常见 Q&A
<url-pattern>/</url-pattern>
和<url-pattern>/*</url-pattern>
区别
<url-pattern>/</url-pattern>
不会匹配到.jsp,即:*.jsp不会进入spring的 DispatcherServlet类 。
<url-pattern>/*</url-pattern>
会匹配 .jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet类,导致找不到对应的controller所以报404错。
总之,关于web.xml的url映射的小知识:
<url-pattern>/</url-pattern>
会匹配到/login这样的 路径型url,不会匹配到模式为*.jsp这样的 后缀型url。
<url-pattern>/*</url-pattern>
会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)
以上本人未验证,需要验证