web中的相对路径和绝对路径
以/WebTest这个web项目为案例,项目目录结构如下:
servlet代码如下:
public class WebServlet extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = -4093570687653063628L;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
doPost(req, resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
req.getRequestDispatcher("test.jsp").forward(req, resp);
}
}
1、概念
1.1 服务器解析的路径
Servlet forward to JSP
JSP forward to Servlet
JSP forward to JSP
JSP include JSP
1.1.1绝对路径的解析
服务器端是根据你的web应用的地址为基准的,例如"/test.jsp",会被服务器解析为http://localhost:8080/WebTest/test.jsp,但是因为是服务器跳转,地址栏不会变化。
1.1.2 相对路径的解析
例如"test.jsp",还是可以正确调跳转。目前预测是和前面绝对路径服务器解析规则一样。
1.2 客户端解析的路径
表单action路径
redirect重定向路径
超链接路径
图片路径
CSS路径
Javascript文件路径以及里面要用到的路径
1.2.1绝对路径的解析
浏览器直接加在服务器地址(http://localhost:8080/)后面来访问,例如"/web",浏览器会访问http://localhost:8080/web,这个地址是错误的,丢失了应用名称WebTest
1.2.2 相对路径的解析
浏览器以根据地址栏中的当前地址作为基准,把相对路径加上去来访问。例如当前地址栏地址是"http://localhost:8080/WebTest/index.jsp",那么相对路径"web"会被浏览器解析为"http://localhost:8080/WebTest/web"。
1.3 结论
不要使用相对路径,统一使用绝对路径。(因为绝对路径比相对路径明白清楚)