java学习中碰到的疑惑和解答(二)
路径问题是一个在平时学习和开发碰到的常见问题,对于初学者是一个比较值得研究的东西。因此对路径问题进行总结。
1. 编写路径为了告诉编译器如何找到其他资源。
2. 路径分类:
-
- 相对路径:从当前资源出发寻找其他资源的过程。
- 例如,在src目录下的mybatis.xml文件里配置resource使用的是相对路径,即从src目录下寻找com/bjsxt/mapper/PeopleMapper.xml
- 相对路径:从当前资源出发寻找其他资源的过程。
-
- 绝对路径: 从根目录(服务器根目录或项目根目录)出发找到其他资源的过程
- 例如,在ShowServlet中请求转发到index.jsp,因为在注解WebServlet中配置Servlet时定义了("/abc/b/show"),也就是在WebContent下映射了一个虚拟文件夹abc,abc文件夹下有一个虚拟文件夹b,文件夹b下有资源show,而此时index.jsp在WebContent下。请求转发如果使用相对路径,则应写为"../../index.jsp",而这就非常复杂,而如果使用绝对路径,就可写为"/index.jsp",这样不会出错。
- 例如,在ShowServlet中请求转发到index.jsp,因为在注解WebServlet中配置Servlet时定义了("/abc/b/show"),也就是在WebContent下映射了一个虚拟文件夹abc,abc文件夹下有一个虚拟文件夹b,文件夹b下有资源show,而此时index.jsp在WebContent下。请求转发如果使用相对路径,则应写为"../../index.jsp",而这就非常复杂,而如果使用绝对路径,就可写为"/index.jsp",这样不会出错。
- 绝对路径: 从根目录(服务器根目录或项目根目录)出发找到其他资源的过程
-
-
- 标志: 只要以 / 开头的都是绝对路径 。
-
3. 绝对路径
-
- 如果是请求转发 / 表示项目根目录(WebContent。
- 其他重定向或者静态资源引用<img src=""/>, <a href="">, <script src=""/> ,css等引用时/都表示服务器根目录(tomcat/webapps 文件夹)。
4. 如果客户端请求的控制器(Servlet),控制器转发到JSP后,jsp中如果使用相对路径,需要按照控制器的路径去找其他资源
-
- 保险方法:使用绝对路径。
- 例如:
- 之前的ShowServlet请求转发至index.jsp,在jsp中显示图片<img src="image/a.png"/>,使用相对路径,此时显示失败,原因是jsp中如果使用相对路径,需要按照控制器的路径(ShowServlet)去找其他资源,而控制器中有虚拟的文件目录abc/b/,浏览器就会在abc/b/下寻找image文件夹,所以无法寻找到图片。
- 此时为避免路径太过复杂,使用绝对路径,</项目名/img src="image/a.png"/>,图片显示成功。
- 使用项目名而不使用WebContent是因为Tomcat发布项目以后,WebContent会更改文件名为项目名。