复习_web路径问题
程序员文章站
2024-02-07 16:33:34
...
案例
1.创建如下目录结构
2.c.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
我是a下的b下的c
<a href="../../index.jsp">返回</a>
</body>
</html>
3.index.jsp
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="a/b/c.html">a/b/c.html</a><br/>
<a href="/DynamicWebProject_war_exploded/forward">请求转发: a/b/c.html</a>
</body>
</html>
请求href=“a/b/c.html"的真实路径:http://localhost:8080/DynamicWebProject_war_exploded/a/b/c.html
请求href=”/DynamicWebProject_war_exploded/forward"的真实路径:http://localhost:8080/DynamicWebProject_war_exploded/forward
4.创建请求转发servlet
public class Forward extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("经过Forword程序,进行请求转发");
request.getRequestDispatcher("/a/b/c.html").forward(request, response);
}
}
5.页面显示如下
测试:
1.当我们点击A标签进行跳转的时候,浏览器中的地址为http://localhost:8080/DynamicWebProject_war_exploded/a/b/c.html
,所有相对路径在工作的时候都会参照当前浏览器地址栏中的地址来进行跳转
那么在c.html中,去掉…/…/得到的地址为:http://localhost:8080/DynamicWebProject_war_exploded/index.jsp
2.当我们通过请求转发来进行跳转时,浏览器中的地址为:http://localhost:8080/DynamicWebProject_war_exploded/forward
那么在c.html中,去掉…/…/得到的地址为:http://localhost:8080/index.jsp
所以错误了
如何解决这个错误
使用base标签
1.Web中路径
在javaWeb中,路径分为相对路径和绝对路径两种
相对路径:
. 表示当前目录
.. 表示上一级目录
资源名 表示当前目录/资源名
绝对路径:
http://ip:port/工程路径/资源路径
1.1 / 斜杠的不同意义
- / 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
- / 斜杠 如果被服务器解析.得到的地址是:http://ip:port/工程路径
特殊情况
// 把斜杠发送给浏览器解析,得到第一种
response.sendRedirect("/");