绝对路径:以/开头的路径就叫做绝对路径,绝对路径在相对于的路径上直接拼接得到最终的路径
相对路径:不以/开头的路径就叫做相对路径,相对路径基于当前所在的路径计算的到最终的路径
硬盘路径:以盘符开头的路径就叫做硬盘路径.是哪个路径就是哪个路径.没有相对于谁的问题
虚拟路径::--写虚拟路径时都使用绝对路径
如果路径是给浏览器用的,这个路径相对于虚拟主机,所以需要写上web应用的名称
如果路径是个服务器用的,这个路径相对于web应用,所以可以省写web应用的名称
<a href="/Day04/.....">
<form action="/Day04/...">
<img src="/Day04/....">
response.setHeader("Location","/Day04/....");
response.setHeader("refresh","3;url=/Day04/...");
response.sendRedirect("/Day04/...");
request.getRequestDispathce("/index.jsp").forward();
request.getRequestDispathce("/index.jsp").include();
真实路径: --写真实路径时都使用相对路径
根据原理,具体问题具体分析
servletContext.getRealPath("config.properties");//--给一个相对于web应用目录的路径
classLoader.getResource("../../config.properties");//--给一个相对于类加载目录的路径
File file = new File("config.properties");//--相对于程序的启动目录
new InputStream("config.properties");//--相对于程序的启动目录
案例:
package com.java.request;
import java.io.File;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo9 extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//如果这样写会报错:request.getRequestDispatcher("/Day04/index.jsp").forward(request, response);
//上面的原因是路径是个服务器用的,这个路径相对于web应用,所以可以省写web应用的名称
request.getRequestDispatcher("/index.jsp").forward(request, response);//这个是正确的
File file = new File("/config.properties");
System.out.println(file.getAbsolutePath());
File file1 = new File("config.properties");
System.out.println(file1.getAbsolutePath());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
上面的例子输出的是:
D:\config.properties
D:\xampp\tomcat\bin\config.properties