初识Servlet 遇到关于路径的问题

  • 这是我的项目结构:

初识Servlet 遇到关于路径的问题

  • 项目的虚拟路径:

初识Servlet 遇到关于路径的问题

  • 当我在web.xml中设置news.html为欢迎界面时:

初识Servlet 遇到关于路径的问题

  • 网页会出现图片无法加载的问题:

初识Servlet 遇到关于路径的问题

  • 我们可以看到news.html中的url是相对路径:

初识Servlet 遇到关于路径的问题

  • 这样就会导致当网页打开后,网页会在当前目录下自动进行图片访问加载
    初识Servlet 遇到关于路径的问题
    我们知道通过../img/logo.png访问到的路径为localhost:8080/img/logo.png,那么就会产生一个问题:虚拟路径缺失,因此会导致图片无法加载。

解决方案一

我们可以把虚拟路径设置为 / ,这样可以避免虚拟路径的丢失。


解决方案二

也可以直接在浏览器中输入绝对路径:localhost:8080/test/news/news.html,也可以解决图片加载不出来的问题。
但这样欢迎界面就没有意义了。


解决方案三

可以不用设置欢迎界面,可以在index.jsp中通过<a>标签设置链接打开news.html页面。


总结

  • 对于这个项目,不能配置虚拟路径,如果配置虚拟路径news.html的图片将无法显示

  • 当访问到news.html ,浏览器会检测html中的所有路径(img,link),再次发起请求,而这些路径如果是相对路径,则会参照当前浏览器中的路径来进行查找

  • 由于相对路径参照的文件夹不一样,会有很多种解决方案,主要是要理解资源的加载路径、加载过程