vlambda博客
学习文章列表

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包前要注意将虚拟目录路径修改为“/”