- 路径分为相对路径和绝对路径,绝对路径是以/开头的
- 相对路径:
1)如果js页面的head中出现了base标记,那么所有相对路径,不再基于自己,基于base 标记的href属性的值。
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
相当于 http://localhost:8080/JspWeb/
<base href="<%=basePath%>">
例如: test1和test2同属于webroot的jsp文件夹下
test1中写了<base href="<%=basePath%>">
<a href="jsp/test2.jsp">相对路径跳转2</a>
<a href="/JspWeb/jsp/test2.jsp">绝对路径跳转2</a>
test2中没有写<base href="<%=basePath%>">
<a href="test1.jsp">相对路径跳转1</a>
<a href="/JspWeb/jsp/test1.jsp">绝对路径跳转1</a>
2)除了上面的1)其他的相对路径都是基于他自己,要跳转到目的地路径,从路径末尾一级一级往上找,找到根目录,在根目录后面写上目的地根目录后的路径即可。简单的说:从最末端的/到根目录之后的/的个数减一即为../的个数
例如:
本身的路径:http://localhost:8080/UrlWeb/one/two/testServlet1
目的地路径:http://localhost:8080/UrlWeb/three/testServlet2
请求转发相对路径跳转2
request.getRequestDispatcher("../../three/testServlet2").forward(request, response);
3.绝对路径:
请求转发: 绝对路径的/ 代表的是根目录之后的 /
重定向: 绝对路径的/ 代表的是端口号之后的 /
页面的路径: 绝对路径的/ 代表的是端口号之后的 /
servletContext对象 : 没有相对路径和绝对路径的说法 写不写/ 都是代表绝对路径 绝对路径的/代表WebRoot,注意:context.getResourcePaths("/image"); 不加/会报错,推荐使用servletContext对象涉及到路径的方法,全部加上/
例如:
本身的路径:http://localhost:8080/UrlWeb/one/two/testServlet1
目的地路径:http://localhost:8080/UrlWeb/three/testServlet2
请求转发绝对路径跳转2
request.getRequestDispatcher("/three/testServlet2").forward(request, response);
重定向的绝对路径跳转2
response.sendRedirect("/UrlWeb/three/testServlet2");
<a href="/JspWeb/jsp/test2.jsp">绝对路径跳转2</a>