web路径总结与项目部署到Tomcat时资源访问404问题的解决

Posted CppTeam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web路径总结与项目部署到Tomcat时资源访问404问题的解决相关的知识,希望对你有一定的参考价值。

路径的分类:

1、相对路径

  • 不可以确定唯一资源    

        eg:./demo.html  表示当前目录下有一个demo.html页面

        规则:./表示当前目录                 ../表示上一级目录

  • 注意事项

        IDEA中:

            如果使用Junit中的单元测试方法测试,相对路径在当前Module下

            如果使用main()测试,相对路径即为当前的Project下

        Eclipse中:

            不论单元测试方法还是man()测试,相对路径都是在当前的Project下


2、绝对路径

  • 可以确定唯一的资源    

            eg:http://ip:port/myWeb/demo.html

            可简化为: /myWeb/demo.html。省略了协议、域名和端口号

 

  • 绝对路径又分为浏览器解析和服务器解析两种:

  • 包括:超链接、重定向和html标签中写的路径

  • 包括:Servlet路径配置、请求转发、Context.getRealPath()和jsp中自定义的标签


    写绝对路径建议不要写死,不然如果修改了Tomcat中的虚拟目录,那么所有用绝对路径写的重定向都将无法访问.可以调用request.getContextPath()获取虚拟目录路径

//动态获取虚拟目录String contextPath = request.getContextPath();//重定向演示response.sendRedirect(contextPath + "/demo.html")





Ajax中的路径:

1、请求路径以根路径“/“开头

    无论什么ajax在什么页面,该请求都是相对于服务器的根路径,即最后的路径是http://ip:port /myWeb/demoServlet (“/”表示基于服务器的根路径)


2、不以“/“开头

表示改请求路径相对于当前文件所在的路径

$.ajax({


  url: “/request/ajaxTest”    

 

})

若请求在当前页面( http://ip:port/myWeb/index.html)

则实际请求路径为:http://ip:port/myWeb/request/ajaxTest


3、全路径




web项目部署到Tomcat时的404问题:

    将idea中的web项目打包部署到Tomcat时,如果我们发现几乎所有页面都无法访问404时,我们需要去检查idea中Tomcat的配置

    原因在于:我们通常习惯于将web项目的默认访问路径Application context修改为与项目同名。我们要注意在打war包前需要将虚拟目录路径修改为“/”


因为在我们打包部署到Tomcat后, http://ip:port/ 对应Tomcat目录下的webapps目录 ,而webapps目录下是一个个的web工程,如若我有个web项目叫myWeb,那么我去访问这个工程的路径为: http://ip:port/myWeb。 访问时会自动带上虚拟目录/myWeb,变为: http://ip:port/myWeb/myWeb。 显然是错误的,因为我们只需要他自动带上“/”即可,变为: http://ip:port/myWeb/自动访问index页面,这才是正确的, 因此在打war包前要注意将虚拟目录路径修改为“/”

以上是关于web路径总结与项目部署到Tomcat时资源访问404问题的解决的主要内容,如果未能解决你的问题,请参考以下文章

tomcat的缺省servlet如何处理静态资源

给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)

web项目部署成功,端口号,路径都正确,项目从来没有从命名,但是访问的时候报错404.求解,到底是为啥。

Tomcat 部署Web应用

javaWeb项目已经通过myeclipse部署到tomcat webapps中,但是项目文件夹中的jsp页面却访问不到?

eclipse中web项目发布到tomcat时项目名称不同