经常写web工程,就会涉及很多路径问题,今天复习下绝对路径和相对路径,以提醒自己下次不要以为路径问题头疼。
1.绝对路径和相对路径
相对路径:helloworld ./helloworld ../helloworld 这样的都是相对路径
绝对路径:/helloworld /myweb/helloworld
2.相对路径相对谁
相对路径相对的是当前的url,怎么解释,例如:
当前url为:8080/day/tijiao.html,看一下tijiao.html的源码:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>提交一个数</title></head><body><form action="path" method="post">请输入一个数字: <input type="text" name="number"/><input type="submit" value="测试获得路径" /></form></body></html>action写的是path,那么,提交后,就会把:8080/day/tijiao.html链接中的tijiao.html替换为path变为:8080/day/path,这就是所谓的相对于当前的url。
如果我们这样:
tijiao.html的源代码仍然是上面的,那么点击提交按钮后,会变成如下:
按照刚才那个原理,把最后一个tijiao.html换为path,那么就无法找到,所以404。
3.如何写绝对路径,对于客户端绝对路径中的/代表什么?
如果我们部署的工程名是/day,那么我们可以这样写html路径:
<form action="/day/path" method="post"> 此时 / 代表服务器根目录:8080
4.jsp中怎样写?
由于我们部署服务器,,可能叫不同的名,那么我们在代码中写死了/day这样很不好,那在jsp中如何写呢?
我们可以这样:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>提交一个数</title></head><body><form action="<%=request.getContextPath()%>/path" method="post">请输入一个数字: <input type="text" name="number"/><input type="submit" value="测试获得路径" /></form></body></html><%=request.getContextPath()%>就可以获取部署的跟路径了。
5.客户端关于路径问题的通用结论:
html,jsp,js文件用里面用绝对路径
css内部使用的背景图片等用相对路径
天下没有不散的宴席,也许这人间真的只有朦朦胧胧才是真。