0%

路径问题

路径问题

只要路径中以/开头的都叫全路径,从项目根目录(web)出发找到其它资源

只要不以/开头的都叫相对路径,相对路径是从当前资源出发找到其它资源

eg:

1
2
3
//如果请求转发,/表示web目录
//如果是重定向,静态资源引用时,img、a href..、script src=""、css等 引用时,其中/都表示的是tomcat的webapps文件夹根目录(服务器根目录)
req.getReauestDispatcher("index.jsp").forward(req,res);

eg:

1
2
3
4
5
6
@WebServlet("/abc/show")//即相当于在web中有一个虚拟目录abc
...
//则是相对路径,为/web/abc/index.jsp中,无法找到
req.getReauestDispatcher("index.jsp").forward(req,res);
//需要改成/index.jsp,-->使用全路径防止出错
req.getReauestDispatcher("/index.jsp").forward(req,res);

eg:

在web下有一个文件夹imgages,文件夹中有a.jpg,

web中的index.jsp中使用该图片

1
<img src="image/a.jpg"/>

servlet中跳转

1
2
3
4
5
6
7
8
@WebServlet("/a/b/show")
public class MyServlet extends HttpServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

req.getRequestDispatcher("/index.jsp").forward(req,res);
}
}

然后测试则会发现

在http://localhost:8080/Test_war_exploded中可以看到a.jpg 但在http://localhost:8080/Test_war_exploded/a/b/show中去发现图片无法加载

由于重定向,静态资源引用时,img、a href..、script src=""、css等 引用时,其中/都表示的是tomcat的webapps文件夹根目录(服务器根目录)

所以需要将a.jpg的路径改为

1
<img src="/Test_war_exploded/image/a.jpg"/>

如果直接是/image/a.jpg去调试查看network会发现

1
2
3
Request URL: http://localhost:8080/image/a.jpg
Request Method: GET
Status Code: 404

URL中没有项目名,所以找不到图片资源